4、隐藏索引hide_index或列hide_columns
二、用map()、applymap()结合format()格式化
需安装Jinja2:cmd>pip install Jinja2。
在pandas style的官方文档中,有这样一句note,意思大致是这样的:style属性本身会返回object对象,这个对象内部有一个_repr_heml_方法,可以转为html语言,可以调用.render()方法,查看其html语言及css样式。
css样式在程序里是可以被浏览器识别的,而jupyter notebook本身是运行在网页上的开发工具,所以这些样式是可以被jupyter notebook识别的。
生成模拟数据
import pandas as pd
import numpy as np
np.random.seed(24)
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)
df.iloc[3, 3] = np.nan
df.iloc[0, 2] = np.nan
1、所有列格式化
所有列格式化为2位小数,并转为百分数
df.style.format("{:.2%}")
2、指定列格式化
使用字典和lambda来格式特定列
用字典对指定列进行格式化
df.style.format({'B': "{:0
用lambda对指定列进行格式化
df.style.format({"B": lambda x: "±{:.2f}".format(abs(x))})
df.style.format("{:.2%}", na_rep="空值")
高亮最大值
df.style.highlight_max().format(None, na_rep="-")
高亮空值
df.style.highlight_null(null_color='red')
对B列取绝对值
df.style.format({'B': abs})
3、用map()、applymap()结合自定义函数
(1) 负数涂成红色,将正数涂成黑色
负数高亮显示
def color_negative_red(val):
"""
Takes a scalar and returns a string with
the css property 'color: red'
for negative
strings, black otherwise.
"""
color = 'red' if val < 0 else 'black'
return 'color: %s' % color
df.style.applymap(color_negative_red)
最大值高亮显示
def highlight_max(s):
is_max = s == s.max()
return ['background-color: yellow' if v else '' for v in is_max]
df.style.applymap(color_negative_red).apply(highlight_max)
#map()方法根据提供的函数,对序列的值映射
#apply()方法根据提供的函数,按axis=0或1的方式对序列的值映射
#applymap()方法根据提供的函数,对所有元素的值映射
(2) 结合seaborn使用热力图
import seaborn as sns
cm=sns.light_palette('green',as_cmap=True)
s=df.style.background_gradient(cmap=cm)
(3) 条形图样式
df.style.bar(subset['A','B'],color='#d65f5f')
subset
参数控制作用的行列。
subset
传入的参数类似DataFrame的切片
4、隐藏索引 hide_index
或列 hide_columns
隐藏索引
df.style.hide_index()
#隐藏列
df.style.hide_columns(['C','D'])
5、当样式不取决于值时,使用 set_properties
df.style.set_properties(**{'background-color': 'black',
'color': 'lawngreen',
'border-color': 'white'})
参考链接:
需要重新赋值给df,写入excel时会保留格式。所以,这一方法更实用些。
-
对指定列格式化用map()
-
对所有元素格式化用applymap()
1、保留2位小数
#对'A'列进行设置
df['A']=df_decimal['A'].map(lambda x:('%.2f')%x)
#所有数字保留两位小数
df=df_decimal.applymap(lambda x:('%.2f')%x)
2、设置百分数
#对'A'列进行设置
df['A']=df_decimal['A'].map(lambda x:format(x,'.2%'))
#所有数字设置百分号(%)
df=df_decimal.applymap(lambda x:format(x,'.2%'))
#注意需要重新赋值给df
3、设置千位分隔符
#对'A'列进行设置(千位分隔符)
df['A']=df_int['A'].map(lambda x:format(x,','))
#对所有数据设置千位分隔符
df=df_int.applymap(lambda x: format(x,','))
Original: https://blog.csdn.net/m0_64336020/article/details/121883674
Author: python-小卒
Title: Python模块之Pandas 格式化数据
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/752685/
转载文章受原作者版权保护。转载请注明原作者出处!