看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
我们在最终输出数据查看时,需要对数据进行相应的格式化,常见的如加货币符号、加百分号、增加千分位等,目的是让计数更加场景化,明确列表一定的业务意义。
Styler.format
是专门用来处理格式的方法。
Styler.format(self, formatter,
subset=None,
na_rep: Union[str, NoneType]=None)
formatter (str, callable, dict or None)一般是一个字典,由列名和格式组成,也可以给一个函数来调用。
关于字符的格式化,可参考 python 教程中的格式化字符串。
# 百分号,类似 29.57%
df.style.format("{:.2%}")
# 指定列全变为大写
df.style.format({'name': str.upper})
# B 保留四位,D 两位小数并显示正负号
df.style.format({'B': "{:0<4.0f}", 'D': '{:+.2f}'})
# 应用 lambda
df.style.format({"B": lambda x: "±{:.2f}".format(abs(x))})
# 缺失值的显示格式
df.style.format("{:.2%}", na_rep="-")
# 替换空值,精度保留3位小数(1.3.0+)
df.style.format(na_rep='MISS', precision=3)
# 转义方法,还可以用 LaTeX(1.3.0+)
df.style.format('<a href="a.com/{0}">{0}</a>', escape="html")
# 对float数据的整数个小数部分的分隔,默认是小数点(1.3.0+)
df.loc[:,'Q2':].astype(float).style.format(decimal=';')
# 处理内置样式函数的缺失值
df.style.highlight_max().format(None, na_rep="-")
# 常用的格式
{'a': '¥{0:,.0f}', # 货币符号
'b': '{:%Y-%m}', # 年月
'c': '{:.2%}', # 百分号
'd': '{:,f}', # 千分位
'e': str.upper} # 大写
# 链式方法使用格式
(df.head(15)
.head(10)
.assign(avg=df.mean(axis=1, numeric_only=True)/100) # 增加平均值百分比
.assign(diff=lambda x: x.avg.diff()) # 和前位同学差值
.style
.format({'name': str.upper})
.format({'avg': "{:.2%}"})
.format({'diff': "¥{:.2f}"}, na_rep="-")
)
'''
| | name | team | Q1 | Q2 | Q3 | Q4 | avg | diff |
|---:|:-------|:-------|-----:|-----:|-----:|-----:|:-------|:-------|
| 0 | LIVER | E | 89 | 21 | 24 | 64 | 49.50% | - |
| 1 | ARRY | C | 36 | 37 | 37 | 57 | 41.75% | ¥-0.08 |
| 2 | ACK | A | 57 | 60 | 18 | 84 | 54.75% | ¥0.13 |
| 3 | EORGE | C | 93 | 96 | 71 | 78 | 84.50% | ¥0.30 |
| 4 | OAH | D | 65 | 49 | 61 | 86 | 65.25% | ¥-0.19 |
| 5 | HARLIE | C | 24 | 13 | 87 | 43 | 41.75% | ¥-0.23 |
| 6 | ACOB | B | 61 | 95 | 94 | 8 | 64.50% | ¥0.23 |
| 7 | LFIE | A | 9 | 10 | 99 | 37 | 38.75% | ¥-0.26 |
| 8 | REDDIE | D | 64 | 93 | 57 | 72 | 71.50% | ¥0.33 |
| 9 | OSCAR | A | 77 | 9 | 26 | 67 | 44.75% | ¥-0.27 |
'''
Pandas 1.3.0 提供了一个工具提示的显示功能,就是鼠标上移到具体的数据单元格后,出现提示语,主要应用场景是在做数据分析时,解析数据的逻辑、业务的背景,比如数据为什么下降了等。
动行下例可以看看效果:
# 数据集
df = pd.DataFrame(data=[[0, 1], [2, 3]])
# 提示与原数据同结构,数据内容为对应位置上的提示语
ttips = pd.DataFrame(
data=[["Min", ""], [np.nan, "Max"]], columns=df.columns, index=df.index
)
# 应用提示,并指定表的 css
df.style.set_tooltips(ttips, css_class='tt-add')
# 指定 CSS 样式
df.style.set_tooltips(ttips, css_class='tt-add', props=[
('visibility', 'hidden'),
('position', 'absolute'),
('z-index', 1)])
# CSS style 原生形式
df.style.set_tooltips(ttips, css_class='tt-add',
props='visibility:hidden; position:absolute; z-index:1;')
通过将 <span class=“pd-t”></span>
添加到每个数据单元,然后操纵表级 CSS 以附加伪悬停和伪后选择器来创建工具提示,以生成所需的结果。
工具提示CSS类的默认属性为:
可以对以上属性进行个性化修改。
属性 visibility: hidden;
是悬停功能的关键先决条件,应始终使用 props 参数包含在任何手动属性规范中。
工具提示虽然可以为较大的表添加大量额外的HTML,但不是很有效率,因为它们还要求单元格 ID 必须为True。
更新时间:2021-08-06 00:56:56 标签:pandas 格式