再见,Excel!一行Pandas代码,即可实现漂亮的 “条件格式”!
共 1662字,需浏览 4分钟
·
2021-03-16 10:57
击上方“Python爬虫与数据挖掘”,进行关注
回复“书籍”即可获赠Python从入门到进阶共10本电子书
本文概述
Pandas 是数据科学家做数据处理时,使用最多的工具。
对比Excel,我们可以发现:Pandas基本可以实现所有的Excel的功能,并且比Excel更方便、简洁,其实很多操作我们在过去的文章中,或多或少都讲述过。
但是在数据框上,完成各种 “条件格式” 的设置,帮助我们更加凸显数据,使得数据的展示更加美观,今天还是头一次讲述。
![](https://filescdn.proginn.com/bc2030806a33445da5f147e9a0091511/b194b5266cde80cd9544cf65b75c78f9.webp)
上图左表展示的是某班级期末考试的成绩数据,我们要利用左表完成如右表的效果展示,需要完成的目标如下:
(1)将“均值”这一列的数值,保留1位小数; (2)给这份数据,添加一个标题辅助说明“高三(5)班期末考试成绩”,方便我们区分数据; (3)隐藏索引列(注意最左边!); (4)隐藏指定列,有些列我们不作处理,可以不做展示; (5)将“语文”这一列的数值,依数值大小画条状图; (6)将“均值”这一列数据最大的值,高亮(highlight)展示; (7)将“数学”这一列的数值,依数值画一个绿色的colormap; (8)将整个DataFrame 的空值显示为红色,着重突出;
一行代码即可上述所有操作
用过Pyecharts的朋友可能都知道“链式规则”,在这里我们同样可以采用这种方法,用一行代码就可以实现上述所有的功能。
1. 读取数据
import pandas as pd
df = pd.read_excel("特殊.xlsx")
df.index = list(range(df.shape[0]))
df
结果如下:
![](https://filescdn.proginn.com/c71b279e62abccd0ce535499ba6d4400/35e1038d8c70d8b0916c85cf00230aa7.webp)
2. 一行代码
df.style.format('{:.1f}',subset='均值').set_caption('高三(5)班期末考试成绩').\
hide_index().hide_columns(['索引']).bar('语文',vmin=0).highlight_max('均值').\
background_gradient('Greens',subset='数学').highlight_null()
结果如下:
![](https://filescdn.proginn.com/cadb4cf5f80da8c147540daeebacac33/776c68de05242405488e4439717de61d.webp)
使用说明
这个是Pandas0.17.1中的新功能。官方文档中说到:这是一项新功能,正在积极开发中。我们将添加功能,并可能在将来的版本中进行重大更改。
这个方法出现在pandas.formats.style.Styler类中,今天在这里就不详细介绍该方法的原理,大家知道怎么使用就行,后将在后面的文章中为大家慢慢介绍。
![](https://filescdn.proginn.com/5b2afc267ee087e25630cc72c7875cb1/98113126828fd3958152ab12ed543c9c.webp)
上面我们直接一行代码实现所有的功能,如果我们只想实现某一个功能怎么办呢?
df.style.format( ) df.style.set_caption( ) df.style.hide_index( ) df.style.hide_columns( ) df.style.bar( ) df.style.highlight_max( ) df.style.background_gradient( ) df.style.highlight_null( )
好了,今天就为大家介绍到这里,赶紧下去尝试吧!
------------------- End -------------------
往期精彩文章推荐:
![](https://filescdn.proginn.com/fe674a65473338414d71d68b4bd77c7b/ec29977e7a10004b68a119ebdf1afbc9.webp)
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~