一行 pandas 代码搞定 Excel “条件格式”!

简介: 一行 pandas 代码搞定 Excel “条件格式”!

条件格式


说实话,Excel的 “条件格式” 是东哥非常喜欢的功能之一,通过添加颜色条件可以让表格数据更加清晰的凸显出统计特性。


有的朋友在想,这样的操作在python可能会很复杂。但其实一点不复杂,而且只需一行代码即可。


为什么可以做到一行代码实现 “条件格式”?


一是使用了pandas的style方法,二是要得益于pandas的链式法则


下面我们来一起看个例子,体验一下这个组合操作有多骚。


实例


首先,我们导入数据集,使用经典的titanic中抽样的部分数据。

import pandas as pd
df = pd.read_csv("test.csv")
df

微信图片_20220218222038.jpg

image.gif可以看到,现在这个dataframe是空白的,什么都没有的,现在要给表格添加一些条件。1、比如我们想让Fare变量值呈现条形图,以清楚看出各个值得大小比较,那么可直接使用bar代码如下。

df.style.bar("Fare",vmin=0)

2、再比如,我们想让Age变量呈现背景颜色的梯度变化,以体验映射的数值大小,那么可直接使用background_gradient,深颜色代表数值大,浅颜色代表数值小,代码如下。

df.style.background_gradient("Greens",subset="Age")

微信图片_20220218222044.jpg

3、让所有缺失值都高亮出来,可使用highlight_null,表格所有缺失值都会变成高亮。

df.style.highlight_null()

微信图片_20220218222052.jpg

image.gif以上就是pandasstyle条件格式,用法非常简单。下面我们用链式法则将以上三个操作串起来,只需将每个方法加到前一个后面即可,代码如下。

df.style.bar("Fare",vmin=0).background_gradient("Greens",subset="Age").highlight_null()

image.gif当然,如果你希望加更多的条件格式效果,还可以继续让链式更长,但不论条件怎么多,都只是一行代码。其它操作上面仅仅是列举了三个style中常用的操作,还有很多其他操作比如高亮最大值、给所有负值标红等等,通过参数subset还可以指定某一列或者某几列的小范围内进行条件格式操作。


# 负值标为红色

applymap(color_negative_red)

# 高亮最大值

apply(highlight_max)

# 使某一列编程±前缀,小数点保留两位有效数字

format({"Coulumn": lambda x: "±{:.2f}".format(abs(x))})

# 使用subset进行dataframe切片,选择指定的列

applymap(color_negative_red,
                  subset=pd.IndexSlice[2:5, ['B', 'D']])

另外,还有很多的效果可以实现,比如结合seaborn的各种风格。

import seaborn as sns
cm = sns.light_palette("green", as_cmap=True)
df.style.background_gradient(cmap=cm)

微信图片_20220218222059.jpg如果结合IpythonHTML还可以实现炫酷的动态效果。

from IPython.display import HTML
def hover(hover_color="#ffff99"):
    return dict(selector="tr:hover",
                props=[("background-color", "%s" % hover_color)])
styles = [
    hover(),
    dict(selector="th", props=[("font-size", "150%"),
                               ("text-align", "center")]),
    dict(selector="caption", props=[("caption-side", "bottom")])
]
html = (df.style.set_table_styles(styles)
          .set_caption("Hover to highlight."))
html



关于style条件格式的所有用法,可以参考pandas的官方文档。


链接:https://pandas.pydata.org/pandas-docs/version/0.18/style.html

相关文章
|
3月前
|
数据格式 Python
【Python】已解决:Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
【Python】已解决:Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
180 0
|
3月前
|
数据挖掘 Python
【Python】已解决:Python pandas读取Excel表格某些数值字段结果为NaN问题
【Python】已解决:Python pandas读取Excel表格某些数值字段结果为NaN问题
186 0
|
9天前
|
Python
pandas 生成 Excel 时的 sheet 问题
pandas 生成 Excel 时的 sheet 问题
15 1
|
11天前
Excel中用宏VBA实现GBT 4761-2008 家庭关系代码转换
Excel中用宏VBA实现GBT 4761-2008 家庭关系代码转换
|
13天前
|
数据采集 索引 Python
pandas处理excel
pandas处理excel
|
11天前
|
Python
Python:Pandas实现批量删除Excel中的sheet
Python:Pandas实现批量删除Excel中的sheet
28 0
|
2月前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
122 0
|
2月前
|
Python
【Python】解决pandas读取excel,以0向前填充的数字会变成纯数字
本文介绍了两种解决Python使用pandas库读取Excel时,数字前填充的0丢失问题的方法:一是在读取时指定列以字符串格式读取,二是在Excel中预先将数值转换为文本格式。
105 0
【Python】解决pandas读取excel,以0向前填充的数字会变成纯数字
|
2月前
|
算法 数据挖掘 Java
日常工作中,Python+Pandas是否能代替Excel+VBA?
日常工作中,Python+Pandas是否能代替Excel+VBA?
|
2月前
Excel 条件格式
Excel 条件格式
25 0