Zaoqi's Blog -> Python数据分析教程 -> 图解Pandas ->
style - 自定义样式输出
style - 自定义样式输出¶
在线刷题
检查 or 强化 Pandas
数据分析操作?👉在线体验「Pandas进阶修炼300题」
Note
本页面代码可以在线编辑、执行!
上面基于 option
的 pandas
相关设置是全局配置,一次设置会在关闭notebook前一直有效
但相关常用的设置并不多,不能满足更多的个性化需求。
幸运的是在 pandas
中提供 Styler
对象让我们进一步个性化展示数据。
注意:基于 style
个性化设置同样不会修改数据,所有 data.style.xxxx
输出的数据均是一次性的(可以复用、导出),因此你应该在合适的时间选择使用该方法。
下面仅列举常用的方法,若想了解更多可以查阅pandas官方文档对应文章👉
本页面数据说明¶
为了更好的介绍相关操作,本页面使用 某招聘数据 数据进行展开,你应该对数据字段、数值、类型等相关信息做一个大致了解!
import pandas as pd
data = pd.read_csv("data.csv", usecols=[
'positionName', 'createTime', 'salary', 'subwayline', 'matchScore'], nrows=20, parse_dates=['createTime'])
data.head()
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | NaN | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | NaN | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | NaN | 12.755375 |
隐藏索引¶
隐藏索引列
data.style.hide_index().set_table_attributes('style="font-size: 10px"')
positionName | createTime | salary | subwayline | matchScore |
---|---|---|---|---|
数据分析 | 2020-03-16 11:00:00 | 37500 | nan | 15.101875 |
数据建模 | 2020-03-16 11:08:00 | 15000 | nan | 32.559414 |
数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
数据分析 | 2020-03-16 09:56:00 | 30000 | nan | 12.755375 |
数据分析 | 2020-03-16 09:54:00 | 50000 | nan | 12.718732 |
数据分析 | 2020-03-16 09:41:00 | 30000 | nan | 12.615116 |
数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
数据分析专家 | 2020-03-16 10:57:00 | 60000 | nan | 1.141952 |
数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.161869 |
大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
资深数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.075559 |
数据分析师 | 2020-03-16 10:59:00 | 37500 | nan | 1.053428 |
产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | nan | 1.015806 |
资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | nan | 1.009167 |
大数据建模总监 | 2020-03-16 11:08:00 | 37500 | nan | 2.719454 |
数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | nan | 3.033237 |
数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
调整精度¶
将带有小数点的列精度调整为小数点后2位
data.style.set_precision(2).set_table_attributes('style="font-size: 10px"')
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | nan | 15.10 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | nan | 32.56 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.97 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.87 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | nan | 12.76 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | nan | 12.72 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | nan | 12.62 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.03 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | nan | 1.14 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.18 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.16 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.25 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.09 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.08 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | nan | 1.05 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | nan | 1.02 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | nan | 1.01 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | nan | 2.72 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | nan | 3.03 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.83 |
标记缺失值¶
将缺失值标记为数据缺失
(data
.style
.set_na_rep("数据缺失")
.set_table_attributes('style="font-size: 10px"'))
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | 数据缺失 | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | 数据缺失 | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | 数据缺失 | 12.755375 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | 数据缺失 | 12.718732 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | 数据缺失 | 12.615116 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | 数据缺失 | 1.141952 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | 数据缺失 | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | 数据缺失 | 1.075559 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | 数据缺失 | 1.053428 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | 数据缺失 | 1.015806 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | 数据缺失 | 1.009167 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | 数据缺失 | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | 数据缺失 | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
高亮缺失值¶
将缺失值高亮,颜色名skyblue
(data
.style
.set_na_rep("数据缺失")
.highlight_null(null_color='skyblue')
.set_table_attributes('style="font-size: 10px"'))
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | 数据缺失 | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | 数据缺失 | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | 数据缺失 | 12.755375 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | 数据缺失 | 12.718732 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | 数据缺失 | 12.615116 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | 数据缺失 | 1.141952 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | 数据缺失 | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | 数据缺失 | 1.075559 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | 数据缺失 | 1.053428 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | 数据缺失 | 1.015806 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | 数据缺失 | 1.009167 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | 数据缺失 | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | 数据缺失 | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
高亮数值列最大值¶
将 数值格式列的最大值进行高亮
data.style.highlight_max().set_table_attributes('style="font-size: 10px"')
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | nan | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | nan | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | nan | 12.755375 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | nan | 12.718732 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | nan | 12.615116 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | nan | 1.141952 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.075559 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | nan | 1.053428 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | nan | 1.015806 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | nan | 1.009167 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | nan | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | nan | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
高亮数值列最小值¶
将 数值格式列的最小值进行高亮
data.style.highlight_min().set_table_attributes('style="font-size: 10px"')
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | nan | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | nan | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | nan | 12.755375 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | nan | 12.718732 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | nan | 12.615116 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | nan | 1.141952 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.075559 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | nan | 1.053428 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | nan | 1.015806 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | nan | 1.009167 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | nan | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | nan | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
同时高亮最大最小值¶
同时高亮最大值(颜色代码为#F77802
)与最小值(颜色代码为#26BE49
)
(data
.style
.highlight_max(color='#F77802')
.highlight_min(color='#26BE49')
.set_table_attributes('style="font-size: 10px"'))
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | nan | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | nan | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | nan | 12.755375 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | nan | 12.718732 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | nan | 12.615116 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | nan | 1.141952 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.075559 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | nan | 1.053428 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | nan | 1.015806 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | nan | 1.009167 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | nan | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | nan | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
指定区间高亮¶
高亮 salary 列范围在 3000 - 10000 的数值
# 需要 pandas 版本大于 1.3.0 才可以执行
# (data
# .style
# .highlight_between(left=3000, right=10000, subset=['salary'])
# .set_table_attributes('style="font-size: 10px"'))
渐变显示数值列¶
将数值格式的列使用渐变色(绿色)进行显示,以突出趋势
import seaborn as sns
cm = sns.light_palette("green", as_cmap=True)
(data
.style
.background_gradient(cmap=cm)
.set_table_attributes('style="font-size: 10px"'))
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | nan | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | nan | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | nan | 12.755375 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | nan | 12.718732 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | nan | 12.615116 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | nan | 1.141952 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.075559 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | nan | 1.053428 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | nan | 1.015806 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | nan | 1.009167 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | nan | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | nan | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
修改字体颜色¶
将 salary
列修改为红色字体
(data
.style
.set_properties(
subset=['salary'], **{'color': 'red'})
.set_table_attributes('style="font-size: 10px"'))
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | nan | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | nan | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | nan | 12.755375 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | nan | 12.718732 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | nan | 12.615116 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | nan | 1.141952 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.075559 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | nan | 1.053428 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | nan | 1.015806 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | nan | 1.009167 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | nan | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | nan | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
修改背景颜色、对齐方式、字体大小¶
将整个 dataframe
进行如下设置:
居中
背景色修改为
#F8F8FF
字体:13px
(data
.style
.set_properties(**{'background-color': '#F8F8FF','text-align':'center', 'font-size': '13px'})
.set_table_attributes('style="font-size: 10px"'))
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | nan | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | nan | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | nan | 12.755375 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | nan | 12.718732 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | nan | 12.615116 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | nan | 1.141952 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.075559 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | nan | 1.053428 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | nan | 1.015806 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | nan | 1.009167 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | nan | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | nan | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
综合(链式)设置¶
除了上面的单个设置,还可以将多个设置进行结合,下面对整个 dataframe
进行如下设置:
居中
背景色修改为
#F8F8FF
字体:13px
并将 salary
列字体修改为红色
(data
.style
.set_properties(**{'background-color': '#F8F8FF','text-align':'center', 'font-size': '13px'})
.set_properties(
subset=['salary'], **{'color': 'red'})
.set_table_attributes('style="font-size: 10px"'))
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | nan | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | nan | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | nan | 12.755375 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | nan | 12.718732 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | nan | 12.615116 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | nan | 1.141952 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.075559 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | nan | 1.053428 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | nan | 1.015806 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | nan | 1.009167 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | nan | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | nan | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
导出样式¶
将上一题带有样式的 pandas 数据框导出为本地 Excel(.xlsx格式)
(data
.style
.set_properties(**{'background-color': '#F8F8FF','text-align':'center', 'font-size': '13px'})
.set_properties(
subset=['salary'], **{'color': 'red'})).to_excel('带有样式导出.xlsx')
制作指定列条形图¶
在 pandas
中对 salary
列使用条形图进行可视化,指定颜色skyblue
(data
.style
.bar(subset=['salary'],color='skyblue')
.set_table_attributes('style="font-size: 10px"'))
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | nan | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | nan | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | nan | 12.755375 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | nan | 12.718732 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | nan | 12.615116 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | nan | 1.141952 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.075559 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | nan | 1.053428 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | nan | 1.015806 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | nan | 1.009167 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | nan | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | nan | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
自定义样式¶
将 salary
列数值大于 30000 的单元格字体修改为红色
def my_style(val):
color = 'red' if val > 30000 else 'black'
return 'color: %s' % color
data.style.applymap(my_style, subset="salary").set_table_attributes('style="font-size: 10px"')
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500 | nan | 15.101875 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000 | nan | 32.559414 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000 | nan | 12.755375 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000 | nan | 12.718732 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000 | nan | 12.615116 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000 | nan | 1.141952 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000 | nan | 1.075559 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500 | nan | 1.053428 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500 | nan | 1.015806 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500 | nan | 1.009167 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500 | nan | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000 | nan | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500 | 2号线 | 0.834333 |
格式化输出日期类型¶
将 createTime
列格式化输出为 xx年xx月xx日
data.style.format({"createTime": lambda t: t.strftime("%Y年%m月%d日")}).set_table_attributes('style="font-size: 10px"')
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020年03月16日 | 37500 | nan | 15.101875 |
1 | 数据建模 | 2020年03月16日 | 15000 | nan | 32.559414 |
2 | 数据分析 | 2020年03月16日 | 3500 | 4号线 | 14.972357 |
3 | 数据分析 | 2020年03月16日 | 45000 | 1号线 | 12.874153 |
4 | 数据分析 | 2020年03月16日 | 30000 | nan | 12.755375 |
5 | 数据分析 | 2020年03月16日 | 50000 | nan | 12.718732 |
6 | 数据分析 | 2020年03月16日 | 30000 | nan | 12.615116 |
7 | 数据建模工程师 | 2020年03月16日 | 35000 | 2号线 | 3.033237 |
8 | 数据分析专家 | 2020年03月16日 | 60000 | nan | 1.141952 |
9 | 数据分析师 | 2020年03月16日 | 40000 | 2号线 | 1.177361 |
10 | 数据分析师 | 2020年03月16日 | 30000 | nan | 1.161869 |
11 | 大数据分析工程师(J11108) | 2020年03月16日 | 30000 | 2号线 | 4.245066 |
12 | 数据分析工程师 | 2020年03月16日 | 20000 | 2号线 | 1.091051 |
13 | 资深数据分析师 | 2020年03月16日 | 30000 | nan | 1.075559 |
14 | 数据分析师 | 2020年03月16日 | 37500 | nan | 1.053428 |
15 | 产品运营(偏数据分析) | 2020年03月16日 | 27500 | nan | 1.015806 |
16 | 资深数据分析师(杭州) | 2020年03月16日 | 37500 | nan | 1.009167 |
17 | 大数据建模总监 | 2020年03月16日 | 37500 | nan | 2.719454 |
18 | 数据建模专家-杭州-01546 | 2020年03月16日 | 30000 | nan | 3.033237 |
19 | 数据分析专家(游戏业务) | 2020年03月16日 | 37500 | 2号线 | 0.834333 |
自定义格式化数据¶
在
salary
列后增加”元”对
matchScore
列保留两位小数并增加”分”
(data
.style
.format("{0:,.2f}分", subset="matchScore")
.format("{""}元", subset="salary")
.set_table_attributes('style="font-size: 10px"'))
positionName | createTime | salary | subwayline | matchScore | |
---|---|---|---|---|---|
0 | 数据分析 | 2020-03-16 11:00:00 | 37500元 | nan | 15.10分 |
1 | 数据建模 | 2020-03-16 11:08:00 | 15000元 | nan | 32.56分 |
2 | 数据分析 | 2020-03-16 10:33:00 | 3500元 | 4号线 | 14.97分 |
3 | 数据分析 | 2020-03-16 10:10:00 | 45000元 | 1号线 | 12.87分 |
4 | 数据分析 | 2020-03-16 09:56:00 | 30000元 | nan | 12.76分 |
5 | 数据分析 | 2020-03-16 09:54:00 | 50000元 | nan | 12.72分 |
6 | 数据分析 | 2020-03-16 09:41:00 | 30000元 | nan | 12.62分 |
7 | 数据建模工程师 | 2020-03-16 11:18:00 | 35000元 | 2号线 | 3.03分 |
8 | 数据分析专家 | 2020-03-16 10:57:00 | 60000元 | nan | 1.14分 |
9 | 数据分析师 | 2020-03-16 11:18:00 | 40000元 | 2号线 | 1.18分 |
10 | 数据分析师 | 2020-03-16 10:57:00 | 30000元 | nan | 1.16分 |
11 | 大数据分析工程师(J11108) | 2020-03-16 09:25:00 | 30000元 | 2号线 | 4.25分 |
12 | 数据分析工程师 | 2020-03-16 11:18:00 | 20000元 | 2号线 | 1.09分 |
13 | 资深数据分析师 | 2020-03-16 10:57:00 | 30000元 | nan | 1.08分 |
14 | 数据分析师 | 2020-03-16 10:59:00 | 37500元 | nan | 1.05分 |
15 | 产品运营(偏数据分析) | 2020-03-16 10:59:00 | 27500元 | nan | 1.02分 |
16 | 资深数据分析师(杭州) | 2020-03-16 10:59:00 | 37500元 | nan | 1.01分 |
17 | 大数据建模总监 | 2020-03-16 11:08:00 | 37500元 | nan | 2.72分 |
18 | 数据建模专家-杭州-01546 | 2020-03-16 11:17:00 | 30000元 | nan | 3.03分 |
19 | 数据分析专家(游戏业务) | 2020-03-16 10:19:00 | 37500元 | 2号线 | 0.83分 |