0
点赞
收藏
分享

微信扫一扫

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)


0. 样式创建:

① ​​Styler.applymap​​​:elementwise → 按元素方式处理Dataframe
② ​​​Styler.apply​​:column- / row- / table-wise → 按行/列处理Dataframe

前期准备,导入相关的库和加载数据(编程环境jupyter notebook)

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.randn(10,4),columns=['a','b','c','d'])
sty = df.style
print(sty)
print(type(sty))

–> 输出的结果为:

<pandas.formats.style.Styler object at 0x0000000009789CF8> 
<class 'pandas.formats.style.Styler'>

1. 按元素处理样式

​style.applymap()​​,括号内可以加入自定义的函数

def color_neg_red(val):
if val < 0:
color = 'red'
else:
color = 'black'
return(f'color:{color}')
df.style.applymap(color_neg_red)

–> 输出的结果为:(负数显示红色,正数显示黑色)

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)_f5

2. 按行/列处理样式

style.apply(),这个和之前的对列表字段的数据处理类似

def highlight_max(s):
is_max = s == s.max()
#print(is_max)
lst = []
for v in is_max:
if v:
lst.append('background-color: yellow')
else:
lst.append('')
return(lst)
df.style.apply(highlight_max, axis = 0, subset = ['b','c'])

–> 输出的结果为:(每列最大值填充黄色,行列的操作的话就要是列表数据)

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)_f5_02

3. 索引/切片样式修改

df.style.apply(highlight_max, axis = 1, 
subset = pd.IndexSlice[2:5,['b', 'd']])

#也可先索引行再做样式:
#df[2:5].style.apply(highlight_max, subset = ['b', 'd'])

–> 输出的结果为:(核心的要点就是如何筛选DataFrame表格中的指定的区域表格:​​pd.IndexSlice[2:5,['b', 'd']]​​)

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)_html_03

★★★★★ 4. 表格格式处理

​df.style.format()​​ 类似之前的字符串的格式化输出显示

1) 百分数显示

df = pd.DataFrame(np.random.randn(10,4),columns=['a','b','c','d'])
df.head().style.format("{:.2%}")

–> 输出的结果为:

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)_python_04


2) 小数点数显示

df.head().style.format("{:.4f}")

–> 输出的结果为:

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)_数据可视化_05


3) 正负数显示

df.head().style.format("{:+.2f}")

–> 输出的结果为:

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)_数据可视化_06


4) 分列进行格式显示

df.head().style.format({'b':"{:.2%}", 'c':"{:+.3f}", 'd':"{:.3f}"})

–> 输出的结果为:

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)_数据可视化_07

5. 表格样式调用

​Styler​​内置样式调用

1) 定位空值

df = pd.DataFrame(np.random.rand(5,4),columns = list('ABCD'))
df['A'][2] = np.nan
df.style.highlight_null(null_color='red')

–> 输出的结果为:

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)_python_08


2) 色彩映射(渐变)

df = pd.DataFrame(np.random.rand(10,4),columns = list('ABCD'))
df.style.background_gradient(cmap='Greens',axis =1,low=0,high=1)

–> 输出的结果为:(注意axis轴参数的使用)

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)_html_09


3) 条形图

df = pd.DataFrame(np.random.rand(10,4),columns = list('ABCD'))
df.style.bar(subset=['A', 'B'], color='#d65f5f', width=100)

–> 输出的结果为:(​​width​​:最长长度在格子的占比)

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)_数据可视化_10


4) 分段式构建样式

df = pd.DataFrame(np.random.rand(10,4),columns = list('ABCD'))
df['A'][[2,3]] = np.nan
df.style.\
bar(subset=['A', 'B'], color='#d65f5f', width=100).\
highlight_null(null_color='yellow')

–> 输出的结果为:(样式之间可以相互补充)

【python数据分析(26)】DataFrame表格样式设定(针对于jupyter notebook)_数据可视化_11


举报

相关推荐

0 条评论