2025年3月29日 星期六 甲辰(龙)年 月廿八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

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

时间:03-15来源:作者:点击数:9

本次给大家介绍pandas表格可视化的几种常用技巧。

条件格式

Excel的 “条件格式” 是非常棒的功能,通过添加颜色条件可以让表格数据更加清晰的凸显出统计特性。

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

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

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

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

实例

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

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

可以看到,现在这个dataframe是空白的,什么都没有的,现在要给表格添加一些条件。

1、比如我们想让Fare变量值呈现条形图,以清楚看出各个值得大小比较,那么可直接使用bar代码如下。

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

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

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

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

  • df.style.highlight_null()

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

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

当然,如果你希望加更多的条件格式效果,还可以继续让链式更长,但不论条件怎么多,都只是一行代码。

其它操作

上面仅仅是列举了三个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']])

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

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

2、如果结合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

3、还可以自定义函数对表格进行可视化操作。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐