菜鸟笔记
提升您的技术认知

Pandas:利用Styler对象设置Series、Dataframe在Jupyter Notebook中的输出样式(2)——内置样式

当前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方法的参数为:

  • cmapMatplotlib颜色映射(colormap)。类型为字符串或 colormap,默认值为’PuBu’
  • low:最小颜色范围。类型为浮点值。默认为0。
  • high:最大颜色范围。类型为浮点值。默认为0。
  • axis:轴方向,即设置值的比较范围。默认值为0即按列方向比较,1为按行方向比较。
  • subset:指定作用范围(子集)。
  • text_color_threshold:文本的亮度阈值,用于辅助文本在不同背景色下的显示。类型为浮点值或整数,取值范围为0-10为全部文本都为暗色,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')