首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
36 篇文章
1
数据分析大作战,SQL V.S. Python,来看看这些考题你都会吗 ⛵
2
数据科学手把手:碳中和下的二氧化碳排放分析 ⛵
3
面试现场!月薪3w+的这些数据挖掘SQL面试题你都掌握了吗? ⛵
4
员工离职困扰?来看AI如何解决,基于人力资源分析的 ML 模型构建全方案 ⛵
5
AI 音辨世界:艺术小白的我,靠这个AI模型,速识音乐流派选择音乐 ⛵
6
数据专家最常使用的 10 大类 Pandas 函数 ⛵
7
钻石价格预测的ML全流程!从模型构建调优道部署应用!⛵
8
掌握这9个单行代码技巧!你也能写出『高端』Python代码 ⛵
9
刘畊宏男孩女孩看过来!运动数据分析挖掘!⛵
10
二手车价格预测 | 构建AI模型并部署Web应用 ⛵
11
看看你离世界一流大厂有多远?3道Google最新SQL面试题 ⛵
12
客户流失?来看看大厂如何基于spark+机器学习构建千万数据规模上的用户留存模型 ⛵
13
再见 Excel,你好 Python Spreadsheets! ⛵
14
羡慕 Excel 的高级选择与文本框颜色呈现?Pandas 也可以拥有!! ⛵
15
2022了你还不会『低代码』?数据科学也能玩转Low-Code啦! ⛵
16
Pandas数据显示不全?快来了解这些设置技巧! ⛵
17
一键自动化数据分析!快来看看 2022 年最受欢迎的 Python 宝藏工具库! ⛵
18
羡慕实时数据看板?来看看Python的交互数据分析可视化工具!
19
自动化运维?看看Python怎样完成自动任务调度⛵
20
森林野火故事2.0:一眼看穿!使用 Panel 和 hvPlot 可视化 ⛵
21
异常值检测!最佳统计方法实践(代码实现)!⛵
22
大数据开发!Pandas转spark无痛指南!⛵
23
还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
24
业务数据分析最佳案例!旅游业数据分析!⛵
25
Pandas中你一定要掌握的时间序列相关高级功能 ⛵
26
求职指南!给数据开发的SQL面试准备路径!⛵
27
Python中内置数据库!SQLite使用指南! ⛵
28
私藏!资深数据专家SQL效率优化技巧 ⛵
29
Pandas太慢?快使用Vaex DataFrame,每秒数亿数据算起来 ⛵
30
高手系列!数据科学家私藏pandas高阶用法大全 ⛵
31
『航班乘客满意度』场景数据分析建模与业务归因解释 ⛵
32
数据科学家赚多少?基于pandasql和plotly的薪资分析与可视化 ⛵
33
深度解析数据清理和特征工程!5本面向数据科学家的顶级书籍推荐 ⛵
34
就离谱!使用机器学习预测2022世界杯:小组赛挺准,但冠亚季军都错了 ⛵
35
百倍加速IO读写!快使用Parquet和Feather格式!⛵
36
交互式仪表板!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的百度网盘获取,数据读取与处理代码如下:

🏆 实战数据集下载(百度网盘):点击 这获取本文 [6] Pandas 使用 Styler API 设置多条件数据选择&丰富的呈现样式 『conditional formatting in pandas 数据集』

ShowMeAI官方GitHubhttps://github.com/ShowMeAI-Hub

代码语言:python
复制
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 高亮缺失值。

代码语言:python
复制
# 突出显示空值
df_pivoted.style.highlight_null()

大家发现了,使用 .highlight_null 默认是以红色突出显示 nan 缺失值。不喜欢红色?没关系,颜色可以调!

我们可以使用自定义参数对对缺失值的文本和背景进行设定,比如 props='color:white;background-color:black' 可以设定背景色为黑色文本为白色,如下图所示:

代码语言:python
复制
# 背景为黑色,文本为白色,突出显示空值
df_pivoted.style.highlight_null(props='color:white;background-color:black')

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

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

要突出显示每列中的最大值,我们可以使用 dataframe.style.highlight_max()最大值着色,最终结果如下图所示。

代码语言:python
复制
# 背景为绿色,文本为白色,突出显示每一列最大值
df_pivoted.style.highlight_max(props='color:white;background-color:green')

那如果我们想显示的是每一行的最大值呢?我们可以通过设定参数 axis=1 来实现,如下图所示。

代码语言:python
复制
# 背景为绿色,文本为白色,突出显示每一行最大值
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 之间的数填充黄色底色。

代码语言:python
复制
# 背景为黄色,文本为黑色,突出显示 100 到 200 之间的值
df_pivoted.style.highlight_between(left=100, right=200, props='color:black;background-color:yellow')

④ 绘制柱内条形图

可视化图表直观又炫酷!我们可不可以把这种呈现引入到 Pandas 中呢?当然可以!!

以条形图为例。通过 dataframe.style.bar() 可以创建条形图,更直观地显示数值的大小,如下图所示,红色的柱子长度对应单元格内的数值大小。

代码语言:python
复制
# 绘制柱内内条形图
df_pivoted.style.bar()

当然也可以自定义条形图的颜色和大小!如下图所示,设定了颜色和宽高等参数。

代码语言:python
复制
# 绘制柱内内条形图
df_pivoted.style.bar(color='lightblue',height=70,width=70)

⑤ 使用颜色渐变突出显示值

我们还可以用颜色渐变来突出显示整个列,具体实现通过 dataframe.style.background_gradient() 完成。如下图所示,在图像中,随着值的增加,颜色会从红色变为绿色。你可以设置 subset=None 将这个显示效果应用于整个Dataframe。

代码语言:python
复制
# 为列设置颜色渐变值
df_pivoted.style.background_gradient(cmap='RdYlGn',subset=['Product_C'])

⑥ 组合显示设置功能

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

可以定义一个函数,该函数突出显示列中的 min、max 和 nan 值。当前是对 Product_C 这一列进行了突出显示,我们可以设置 subset=None来把它应用于整个Dataframe。

代码语言:python
复制
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
代码语言:python
复制
highlight_dataframe(df_pivoted, subset=['Product_C'])

参考文献

下一篇
举报
领券