Pandas 在Dataframe中将负值标记为红色,正值标记为黑色

Pandas 在Dataframe中将负值标记为红色,正值标记为黑色

分析数据是任何数据科学或分析任务的基本方面,数据探索过程中常见的要求之一是迅速识别Pandas dataframe中的负值和正值,以便有效地解释。

在本文中,我们将使用Python中的Pandas库探索一种强大的技术,可以在DataFrame内部使用红色标记负值并使用黑色标记正值。通过使用这种方法,数据分析师和研究人员可以有效区分正负趋势,帮助深入解释数据和决策。

如何在Pandas Dataframe中将负值标记为红色,正值标记为黑色

有几种方法可以在Pandas DataFrame中将负值标记为红色,正值标记为黑色。以下是三种常用的技术

方法1:使用Styler和Styler.applymap()

Pandas中的Styler类允许我们对DataFrame元素应用格式。我们可以定义一个格式化函数,检查每个值的符号,并返回相应的CSS样式。然后,我们可以使用Styler.applymap()方法将此函数应用于DataFrame的每个元素。

方法2:使用Styler和Styler.background_gradient()

Styler.background_gradient()方法根据值为DataFrame应用渐变颜色映射。我们可以指定颜色范围,例如从红色到黑色,并将中点设置为零。此方法将自动分配颜色,负值显示为红色,正值显示为黑色。

方法3:使用numpy.where()

我们可以使用numpy.where()函数创建一个新的DataFrame,其中值根据其符号替换为颜色代码。我们可以将红色赋给负值,将黑色赋给正值。然后,我们可以显示带有所需颜色格式的DataFrame。

我们将使用一个程序示例来了解这些方法,但首先,让我们看一下我们将遵循的步骤。

  • 导入必要的库−
    • Pandas被导入以用于处理数据框。

    • numpy被导入以处理数值计算。

  • 定义格式化函数−

    • highlight_values 函数以一个值作为输入,并返回用于格式化的CSS样式属性。它检查值是否小于零,如果是则返回’color: red’,否则返回’color: black’。

    • gradient_color 函数以一个数据系列作为输入,并使用系列的绝对值来计算最大值(norm)。然后为系列中的每个元素返回一个CSS背景颜色样式列表,对于负值分配’red’,对于正值分配’black’。

  • where_color 函数使用 numpy.where() 来创建一个新的DataFrame,其中值根据其符号被替换为颜色代码。它为负值赋予’color: red’,为正值赋予’color: black’。

    • 创建一个样本DataFrame –
  • 该程序使用一些数值创建了一个样本DataFrame df。
    • 应用格式化方法 –

    • 方法1:使用Styler和Styler.applymap() -

  • 使用 df.style 对DataFrame df进行样式设置。

  • applymap() 方法应用于样式化的DataFrame,并且 highlight_values 参数设置为函数 where_color

function作为参数传递。

  • 结果样式化的DataFrame保存为名为highlighted_values_method1.xlsx的Excel文件。
    • 方法2:使用Styler和Styler.background_gradient() –
  • DataFrame df使用df.style进行样式化。

  • apply()方法应用于样式化的DataFrame,并将gradient_color函数作为参数传递。

  • 结果样式化的DataFrame保存为名为highlighted_values_method2.xlsx的Excel文件。

    • 方法3:使用numpy.where() –
    • DataFrame df 是使用 df.style 进行样式化的。

    • 应用 apply() 方法到样式化的 DataFrame,将 where_color 函数作为参数传入。

    • 将生成的样式化 DataFrame 保存为名为 highlighted_values_method3.xlsxExcel 文件。

示例

import pandas as pd
import numpy as np

# Method 1: Using Styler and Styler.applymap()
def highlight_values(x):
   if x < 0:
      return 'color: red'
   else:
      return 'color: black'

# Method 2: Using Styler and Styler.background_gradient()
def gradient_color(data):
   norm = abs(data.values).max()
   return ['background-color: {0}'.format('red' if x < 0 else 'black') for x in data]

# Method 3: Using numpy.where()
def where_color(df):
   return np.where(df < 0, 'color: red', 'color: black')

# Create a sample DataFrame
data = {'A': [-2, 4, -1, 5, 0],
   'B': [3, -6, 2, 7, -4],
   'C': [-3, -2, 1, 6, -5]}
df = pd.DataFrame(data)

# Method 1: Using Styler and Styler.applymap()
styled_df = df.style.applymap(highlight_values)
styled_df.to_excel('highlighted_values_method1.xlsx', engine='openpyxl', index=False)

# Method 2: Using Styler and Styler.background_gradient()
styled_df = df.style.apply(gradient_color)
styled_df.to_excel('highlighted_values_method2.xlsx', engine='openpyxl', index=False)

# Method 3: Using numpy.where()
styled_df = df.style.apply(where_color)
styled_df.to_excel('highlighted_values_method3.xlsx', engine='openpyxl', index=False)

输出

highlighted_values_method1.xlsx −

A   B   C
-2  3   -3
4   -6  -2
-1  2   1
5   7   6
0   -4  -5

‘highlighted_values_method2.xlsx –

Pandas 在Dataframe中将负值标记为红色,正值标记为黑色

highlighted_values_method3.xlsx –

A   B   C
-2  3   -3
4   -6  -2
-1  2   1
5   7   6
0   -4  -5

结论

总之,通过使用Pandas中的各种技术,例如Styler类和numpy.where(),我们可以轻松地将DataFrame中的负值以红色标亮,并将正值以黑色标亮。这些方法提供了有效的方式来对数据进行可视化解释,并识别趋势或异常情况。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 精选笔记