📜  在 pandas 表中设置文本和背景颜色 - Python (1)

📅  最后修改于: 2023-12-03 15:07:45.403000             🧑  作者: Mango

在 pandas 表中设置文本和背景颜色 - Python

在数据分析中,使用 Pandas 库通常是不可避免的。当你需要将数据可视化成表格时,你可以使用 Pandas 的 DataFrame 来创建表格,并将表格输出成各种格式,如 HTML、Excel 等。

经常会遇到一些情形,例如根据数据的不同区间设置颜色、某些行的单元格需要高亮显示等。本文将介绍如何在 Pandas 表中设置文本和背景颜色,以便更加便于观察和分析数据。

示例:设置表头背景颜色

先看一个简单的示例:如何为表头添加背景颜色。我们可以使用 Pandas 的 Styler 对象,通过 applymap() 方法来设置单元格的样式。下面的代码演示了如何设置表格表头为灰色背景和白色文字:

import pandas as pd

# 创建测试数据集
data = {'Name': ['Tom', 'Jack', 'Steve', 'Ricky'],
        'Age': [28, 34, 29, 42],
        'Country': ['US', 'UK', 'CA', 'IE']}
df = pd.DataFrame(data)

# 设置表头背景颜色为灰色,文字为白色
df.style.applymap(lambda x: 'background-color: #bfbfbf; color: white' if x.name == '' else '')

该代码会输出如下表格:

| Name | Age | Country | |--------|-----|---------| | Tom | 28 | US | | Jack | 34 | UK | | Steve | 29 | CA | | Ricky | 42 | IE |

其中,背景颜色的代码为 background-color: #bfbfbf;,文字颜色的代码为 color: white。这里需要注意的是,applymap() 方法只能用在 Pandas 的 Styler 对象上。

示例:设置单元格背景颜色

接下来看一个设置单元格背景颜色的示例。假设我们要根据数据中的不同区间给单元格设置背景颜色,比如将数据在 [0, 20] 区间的单元格设置成绿色,[20, 40] 区间的单元格设置成黄色,[40, ∞) 区间的单元格设置成红色。

import numpy as np
import pandas as pd

# 创建测试数据集
np.random.seed(0)
data = np.random.randint(0, 100, (5, 3))
df = pd.DataFrame(data, columns=['A', 'B', 'C'])

# 定义背景颜色的函数
def set_cell_color(val):
    if val <= 20:
        color = '#90ee90'    # 绿色
    elif val > 20 and val <= 40:
        color = '#ffd700'    # 黄色
    else:
        color = '#ff726f'    # 红色
    return f'background-color: {color}'

# 使用 applymap() 方法为单元格设置背景颜色
df.style.applymap(set_cell_color)

该代码会输出如下带有背景颜色的表格:

table_with_color.png

在这个示例中,我们定义了一个函数 set_cell_color(),它会根据单元格的值来决定背景颜色,然后返回一个包含颜色代码的字符串。在使用 applymap() 方法为单元格设置背景颜色时,只需将该函数传递给 applymap() 方法即可。

结论

以上两个例子只是使用 Pandas 设置文本和背景颜色的一个起步,你可以使用各种条件语句和排列,来创建更复杂的样式。不过一定要注意的是,设置样式会增加渲染时间和 CPU 使用率,因此在应用到大型数据集时应当更加小心。