关于python:羡慕-Excel-的高级选择与文本框颜色呈现Pandas-也可以拥有-⛵

💡 作者:韩信子@ShowMeAI
📘 数据分析◉技能晋升系列:https://www.showmeai.tech/tutorials/33
📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40
📘 本文地址:https://www.showmeai.tech/article-detail/293
📢 申明:版权所有,转载请分割平台与作者并注明出处
📢 珍藏ShowMeAI查看更多精彩内容

用过 Excel 的数据分析师,对 Excel 的『条件抉择』与『格局出现』性能大都印象粗浅。下方动图演示了 Excel『数据抉择&底色填充高亮』性能。如果咱们须要『抉择大于100的所有产品取值并对单元格填充红色』,间接如下图所示,在『条件格局』中抉择『突出显示单元格规定』即可进行设置。

习惯用 Python 进行数据分析开掘的咱们,是否能够实现雷同的高级显示呢?答案是,能够的!!

在本文中 ShowMeAI 将带大家在 Pandas Dataframe 中实现多条件数据抉择及各种出现款式的设置。

💡 案例&背景

咱们从一个电商销售的案例背景讲起,下图的数据透视表(pandas pivot table)显示了 2016 年至 2022 年不同产品的总销售额。数据能够在ShowMeAI的百度网盘获取,数据读取与解决代码如下:

🏆 实战数据集下载(百度网盘):公众号『ShowMeAI钻研核心』回复『实战』,或者点击 这里 获取本文 [[6] Pandas 应用 Styler API 设置多条件数据抉择&丰盛的出现款式](https://www.showmeai.tech/art…) 『conditional formatting in pandas 数据集

ShowMeAI官网GitHub:https://github.com/ShowMeAI-Hub

import pandas as pd
data = pd.read_excel('data.xlsx')
df_pivoted = pd.pivot_table(data, index='Year')

💰 你能找出 2016 年最滞销的产品吗

  • 你可能很快能找到答案 Product_B,总销售额为 169,但咱们仅通过透视表去定位后果十分不不便。
  • Pandas 能够很便捷地用条件语句去找到后果,但在原表对应还是不容易。

💰 如果咱们为每年最滞销的产品上色呢,如下图所示用底色突出显示之后,答复下面的问题是不是容易多了

接下来演示在 Pandas 中实现这个操作的具体步骤!

💡 内容笼罩

本篇后续内容笼罩以下高级性能:

  • 突出缺失值
  • 突出显示每行/列中的最大值(或最小值)
  • 突出显示范畴内的值
  • 绘制柱内条形图
  • 应用色彩突变突出显示值
  • 组合显示设置性能

留神:强烈建议大家应用最新版本的 Pandas。你能够通过命令行命令pip install --upgrade pandas获取或降级 Pandas 为最新稳固版本。

① 突出缺失值

在 Pandas Dataframe 中,咱们能够应用 dataframe.style.highlight_null() 为空值着色。下图中咱们为数据透视表 df_pivoted 高亮缺失值。

# 突出显示空值
df_pivoted.style.highlight_null()

大家发现了,应用 .highlight_null 默认是以红色突出显示 nan 缺失值。不喜爱红色?没关系,色彩能够调!

咱们能够应用自定义参数对对缺失值的文本和背景进行设定,比方 props='color:white;background-color:black' 能够设定背景色为彩色文本为红色,如下图所示:

# 背景为彩色,文本为红色,突出显示空值
df_pivoted.style.highlight_null(props='color:white;background-color:black')

通过高亮,咱们能够很快在表中发现2018年 Product_H 没有卖掉的信息。

② 突出显示最大值(或最小值)

要突出显示每列中的最大值,咱们能够应用 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() 应用适当的参数为行/列中的最小值着色。

③ 突出显示范畴内的值

假如咱们要突出显示 100 到 200 之间的值,这个怎么实现呢?咱们能够通过 dataframe.style.highlight_between(left, right) 来实现这个性能。如下图是对 100 到 200 之间的数填充黄色底色。

# 背景为黄色,文本为彩色,突出显示 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()

当然也能够自定义条形图的色彩和大小!如下图所示,设定了色彩和宽低等参数。

# 绘制柱内内条形图
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'])

⑥ 组合显示设置性能

是否能够在数据中同时突出显示最小值、最大值和缺失值呢?能够!!

能够定义一个函数,该函数突出显示列中的 min、max 和 nan 值。以后是对 Product_C 这一列进行了突出显示,咱们能够设置 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
highlight_dataframe(df_pivoted, subset=['Product_C'])

参考文献

  • 🏆 实战数据集下载(百度网盘):公众号『ShowMeAI钻研核心』回复『实战』,或者点击 这里 获取本文 [[6] Pandas 应用 Styler API 设置多条件数据抉择&丰盛的出现款式](https://www.showmeai.tech/art…) 『conditional formatting in pandas 数据集
  • ShowMeAI官网GitHub:https://github.com/ShowMeAI-Hub

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理