转载说明:原创不易,未经授权,谢绝任何形式的转载
用pandas Styler API轻松实现数据可视化
Midjourney 创作,数据分析大师
使用过Excel的数据分析师,大多会对Excel的“条件格式”功能留下深刻的印象。下面的演示展示了如何使用规则来突出显示单元格。规则是“查找所有销售值大于50000的单元格,并将这些单元格填充为红色”。
问题是,Python是否可以像Excel一样具有相似的数据可视化能力,用于我们的数据分析和挖掘?答案是“绝对可以”!在本文中,我将向您介绍Pandas Dataframe中的多条件格式化功能和各种呈现风格。
我们要做什么?我们使用一个简单的数据集,其中包含了从2014年到2022年各种电子产品的销售数据。在运行以下Python代码后,您将看到一个Pandas透视表,展示了我编造的数据。
import Pandas as pd
data = pd.read_excel('sales-demo-dataset.xlsx')
df_pivoted = pd.pivot_table(data, index='Year')
df_pivoted
您能否找出2017年最畅销的产品是什么?
当然,您可以通过手动观察或使用Pandas的条件语句快速知道“Touchpad”是我们正在寻找的产品,但是仍然很难在原始表格上将其突出显示。
如果我们能够为每年最畅销的产品标记一些颜色,那么这些问题会不会更容易回答呢?
在本文中,我们将介绍以下高级功能:
- 突出显示具有null值的单元格
- 突出显示具有最大/最小值的单元格
- 突出显示处于值范围内的单元格
- 在单元格内绘制条形图
- 使用颜色渐变突出显示值
同时运行多个突出显示规则 让我们开始吧!
1、突出显示具有null值的单元格在Pandas Dataframe中,我们可以使用dataframe.style.highlight_null()将nan值着色。在下面的表格中,我们突出显示了透视表df_pivoted中具有缺失值的单元格。
df_pivoted.style.highlight_null()
您可能会注意到,使用.highlight_null默认将缺失值突出显示为红色。不喜欢红色?没关系,颜色是可以改变的!
我们可以使用参数来设置缺失值的文本和背景。例如,props ='color:white;background-color:black'可以将背景颜色设置为黑色,文本设置为白色,如下图所示:
df_pivoted.style.highlight_null(props='color:white;background-color:bl
通过突出显示,我们可以快速在表格中找到“charger”在2021年未销售。
2、突出显示具有最大/最小值的单元格要突出显示每列中的最大值,我们可以使用dataframe.style.highlight_max()来着色最大值,结果如下图所示。
df_pivoted.style.highlight_max(props='color:white;background-color:green')
那么,如果我们想要突出显示每行的最大值怎么办?我们可以通过设置参数axis = 1来实现,如下图所示。
df_pivoted.style.highlight_max(props='color:white;background-color:green', axis=1)
请注意,使用带有适当参数的dataframe.style.highlight_min()方法可以突出显示最小单元格。
3、突出显示处于值范围内的单元格假设我们想要突出显示100到200之间的值,该如何实现?
我们可以使用方法dataframe.style.highlight_between(left,right)。如下图所示,100到200之间的数字用黄色背景色填充。
df_pivoted.style.highlight_between(left=100, right=200, props='color:black;background-color:yellow')
图表直观而且酷炫!我们能否将这些风格带入Pandas中呢?当然可以。以条形图为例,可以通过dataframe.style.bar()创建条形图,以更直观地显示值的大小。如下图所示,红色柱的长度对应于单元格中值的大小。
您还可以自定义条形图的颜色和大小。如下图所示,设置了颜色、宽度和高度等参数。
df_pivoted.style.bar(color='lightblue',height=70,width=70)
我们还可以使用颜色渐变来突出显示整列,使用dataframe.style.background_gradient()实现。下表显示,随着值的增加,颜色从红色变为绿色。您可以设置subset = None将此显示效果应用于整个Dataframe。
df_pivoted.style.background_gradient(cmap='RdYlGn',subset=['Product_C'])
6、同时运行多个突出显示规则RdYlGn是一个colormap(颜色映射表)的名称,表示红-黄-绿色彩的渐变。Rd代表红色(Red),Yl代表黄色(Yellow),Gn代表绿色(Green)。它是一种常用于数据可视化中的颜色映射表,通常用于表示正负值的范围,红色表示负值,绿色表示正值,中间的黄色则表示接近于零的值。
是否可能同时突出显示表格中的最小值、最大值和缺失值?
可以定义一个函数来突出显示列中的最小值、最大值和nan值。在下面的示例中,除了突出显示PC列之外,我们可以将subset = None设置为将其应用于整个Dataframe。
def highlight_dataframe(df, subset= None):
df = df.style.highlight_max(props='color:white;background-color:green', subset=subset) \
.highlight_min(props='color:white;background-color:red', subset=subset) \
.highlight_null(props='color:white;background-color:black', subset=subset)
return df
在Pandas styler API的文档中,您可以找到更多功能,可以丰富您在研究工作中的数据可视化。
今天的分享就到这里,感谢你的阅读,希望能够帮助到你,文章创作不易,如果你喜欢我的分享,别忘了点赞转发,让更多有需要的人看到,最后别忘记关注「前端达人」,你的支持将是我分享最大的动力,后续我会持续输出更多内容,敬请期待。
,原文:https://medium.com/gitconnected/lets-throw-excel-away-by-using-pandas-styler-api-e6e505604265
作者:Yeyu Huang
非直接翻译,有自行改编和添加部分,翻译水平有限,难免有疏漏,欢迎指正