正如我们所知,样式设置背后的基本理念是为了让最终用户的阅读体验更加直观和有效。我们可以通过调整数据的颜色和格式来更高效地传达信息洞察。为了在 Pandas DataFrame 上实现更具冲击力的可视化效果,我们通常会使用 DataFrame.style 属性,它会返回一个样式对象,该对象拥有许多用于格式化和可视化数据框的有用方法。
使用 DataFrame.style 属性
- df.style.set_properties: 通过使用这个方法,我们可以利用内置功能来操作数据框的样式,从字体颜色到背景颜色无所不包。
Python3
# 导入必要的库 -->
import pandas as pd
import numpy as np
# 从 numpy 生成随机数据种子
np.random.seed(24)
# 创建 DataFrame
df = pd.DataFrame({‘A‘: np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4),
columns=list(‘BCDE‘))], axis=1)
# 不带任何样式的 DataFrame
print("原始 DataFrame (Original DataFrame):
")
print(df)
print("
修改样式后的 DataFrame (Modified Styling DataFrame):")
df.style.set_properties(**{‘background-color‘: ‘black‘,
‘color‘: ‘green‘})
**输出:**
**df.style.set_properties**
- **df.style.highlight_null :** 借助此功能,我们可以高亮显示数据框内部的缺失值或空值。
Python3
CODEBLOCK_d06aff48
输出:
!imagedf.style.highlight_null
- df.style.highlight_min : 用于高亮显示整个数据框中每一列的最小值。
Python3
# 高亮显示每一列的最小值
print("
修改样式后的 DataFrame (Modified Styling DataFrame):")
df.style.highlight_min(axis=0)
**输出:**
**df.style.highlight_min**
- **df.style.highlight_max :** 用于高亮显示整个数据框中每一列的最大值。
Python3
CODEBLOCK_e1f49ddd
输出:
!imagedf.style.highlight_max
使用用户自定义函数
- 我们可以使用自定义函数来修改 DataFrame: 借助这个函数,我们可以自定义数据框内正数值的字体颜色。
Python3
# 用于设置 DataFrame 中正数值
# 文本颜色的函数
def color_positive_green(val):
"""
接收一个标量值并返回一个字符串,
如果是正数,则包含 css 属性 `‘color: green‘`,
否则为黑色。
"""
if val > 0:
color = ‘green‘
else:
color = ‘black‘
return ‘color: %s‘ % color
df.style.applymap(color_positive_green)
**输出:**
**用户自定义函数**
## 使用 Seaborn 库
- **使用调色板为 DataFrame 进行渐变填充:** 通过从 seaborn 库导入浅色调色板,我们可以为数据框的背景映射颜色渐变。
Python3
CODEBLOCK_aa6cad70
输出:
!imageSeaborn 调色板
- 结合高亮 null/缺失值使用调色板: 在这里,我们用红色高亮显示 NaN 值,并结合 seaborn 的渐变调色板。
Python3
# 使用 seaborn 调色板
# 高亮显示 DataFrame 中的 NaN 值
print("
修改样式后的 DataFrame (Modified Styling DataFrame):")
df.style.background_gradient(cmap=cm).set_precision(2).highlight_null(‘red‘)
**输出:**
**结合 highlight_null 的 Seaborn 调色板**
- **组合 Seaborn 属性与 DataFrame.style 属性:** 自定义 seaborn 调色板并结合数据框的高亮属性,以实现更具冲击力的数据可视化。
Python3
CODEBLOCK_1fb27cf3