当前pandas
版本为:1.2.5。
styler
对象内置样式概述
pandas
数据结构在jupyter notebook
中以表格形式呈现。这些表格的格式化依赖于pandas
中的styler
对象。dateframe.style
属性返回值为styler
对象。
styler
对象通过生成css样式进行格式化。
styler
对象内置了一系列样式方法。这些方法的返回值大部分还是styler
对象,styler
对象支持链式调用,这样就可以将多种样式叠加在一起。
highlight_null
:高亮显示null
值。highlight_min
:高亮显示最小值。highlight_max
:高亮显示最大值。background_gradient
:依赖matplotlib
,支持seaborn
,以热力图(色阶)形式显示数值大小。bar
:以数据条形式显示数值大小。
下面以案例的形式演示内置样式方法的使用,所有案例以以下案例为基础。
案例基础
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
score = pd.read_csv('./student_score.csv',encoding = 'gbk')
score
highlight_null
:高亮显示null
值
highlight_null
方法的签名如下:
highlight_null(null_color: str = 'red', subset: union[hashable, nonetype, sequence[union[hashable, nonetype]]] = none) -> 'styler'
highlight_null
方法具有两个参数:
null_color
:指定null
值的高亮颜色。类型为字符串,默认为红色。subset
:指定作用范围(子集)。
highlight_null
方法的返回值为styler
对象。
案例:高亮红色显示null
值
# 构造null值
score.iloc[1, 2] = np.nan
score.style.highlight_null()
案例:高亮黄色显示null
值
# 构造null值
score.iloc[1, 2] = np.nan
score.style.highlight_null(null_color='yellow')
highlight_min
:高亮显示最小值
highlight_min
方法的签名如下:
highlight_min(subset=none, color: str = 'yellow', axis: union[str, int, nonetype] = 0) -> 'styler'
highlight_min
方法具有两个参数:
color
:指定最小值的高亮颜色。类型为字符串,默认为黄色。subset
:指定作用范围(子集)。axis
:轴方向,即设置最小值的比较范围。默认值为0
即按列方向比较,1
为按行方向比较。
highlight_min
方法的返回值为styler
对象。
案例:高亮黄色显示每列最小值
score.style.highlight_min()
案例:高亮黄色显示每行最小值
score.style.highlight_min(axis=1)
案例:高亮黄色显示所有元素中的最小值
score.style.highlight_min(axis=none)
案例:高亮红色显示某列中的最小值
score.style.highlight_min(axis=0,subset='高数',color='red')
highlight_max
:高亮显示最大值
highlight_max
方法的签名如下:
highlight_max(subset=none, color: str = 'yellow', axis: union[str, int, nonetype] = 0) -> 'styler'
highlight_max
方法的参数、返回值与highlight_min
方法类似,不再赘述。
background_gradient
:以热力图(色阶)形式显示数值大小
background_gradient
方法依赖matplotlib
,支持seaborn
。
background_gradient
方法的签名为:
background_gradient(cmap='pubu', low: float = 0, high: float = 0, axis: union[str, int, nonetype] = 0, subset=none, text_color_threshold: float = 0.408, vmin: union[float, nonetype] = none, vmax: union[float, nonetype] = none) -> 'styler'
background_gradient
方法的参数为:
cmap
:matplotlib
颜色映射(colormap)。类型为字符串或colormap
,默认值为’pubu’low
:最小颜色范围。类型为浮点值。默认为0。high
:最大颜色范围。类型为浮点值。默认为0。axis
:轴方向,即设置值的比较范围。默认值为0
即按列方向比较,1
为按行方向比较。subset
:指定作用范围(子集)。text_color_threshold
:文本的亮度阈值,用于辅助文本在不同背景色下的显示。类型为浮点值或整数,取值范围为0-1
,0
为全部文本都为暗色,1
为全部文本都为亮色。vmin
:colormap中的最小值。类型为浮点数,默认值为数据中的最小值。vmax
:colormap中的最大值。类型为浮点数,默认值为数据中的最大值。
background_gradient
方法的返回值为styler
对象。
案例:background_gradient()
方法默认样式
score.style.background_gradient()
案例:使用matplotlib内置colormap高亮显示
score.style.background_gradient(cmap='autumn_r')
案例:调整colormap颜色范围
score.style.background_gradient(cmap='autumn_r',high=0.5,low=0.5)
bar
:以数据条形式显示数值大小。
bar
方法的签名为:
bar(subset=none, axis: union[str, int, nonetype] = 0, color='#d65f5f', width: float = 100, align: str = 'left', vmin: union[float, nonetype] = none, vmax: union[float, nonetype] = none) -> 'styler'
bar
方法的参数为:
width
:最大值占单元格宽度的百分比。类型为浮点值,取值范围为0-100
。默认为100
。axis
:轴方向,即设置数据条的比较范围。默认值为0
即按列方向比较,1
为按行方向比较。subset
:指定作用范围(子集)。color
:数据条颜色。类型为字符串或二元数组/列表。默认值为'#d65f5f'
。- 字符串:所有单元格使用同一种颜色。
- 二元数组/列表:分别定义负值和正值数据条颜色,即
(负值颜色,正值颜色)
。
- align :数据条的对齐方式。取值范围为
{'left', 'zero',' mid'}
,默认值为'left'
。'left'
:最小值位于单元格的左侧。'zero'
:0
值位于单元格的中央。'mid'
:(max-min)/2
值位于单元格的中央。如果所有值均为正值,0
值位于单元格左侧;如果所有值均为负值,0
值位于单元格右侧。
vmin
:数据条(左侧)最小值。类型为浮点数,默认值为数据中的最小值。vmax
:数据条(右侧)最大值。类型为浮点数,默认值为数据中的最大值。
bar
方法的返回值为styler
对象。
案例:bar()
方法默认样式
score.style.bar()
案例:bar()
方法align
参数演示
score.style.bar(align='mid')