Pandas也能修改样式?快速给你的数据换个Style!

栏目: IT技术 · 发布时间: 5年前

前言

在之前的很多文章中我们都说过, Pandas openpyxl 有一个很大的区别就是 openpyxl 可以进行丰富的样式调整,但其实在Pandas中每一个DataFrame都有一个 Style 属性,我们可以通过修改该属性来给数据添加 一些 基本的样式。

使用说明

我们可以编写样式函数,并使用CSS来控制不同的样式效果,通过修改 Styler 对象的属性 将样式传递给DataFrame,主要有两种传递方式

  • Styler.applymap :逐元素

  • Styler.apply :列/行/表方式

Styler.applymap 通过DataFrame逐个元素地工作。 Styler.apply 根据axis参数,按列使用axis=0,按行使用axis=1,以及axis=None 作用于整个表 。所以若使用 Styler.applymap ,我们的函数应返回带有CSS属性-值对的单个字符串。若使用 Styler.apply ,我们的函数应返回具有相同形状的Series或DataFrame,其中每个值都是具有CSS属性值对的字符串。

不会CSS?没关系,作为 调包侠 的我们大多是改改HTML颜色代码即可完成样式修改,下面看一些示例。

一些例子

基本样式

首先我们创建一组没有任何样式的数据

Pandas也能修改样式?快速给你的数据换个Style!

我们之前说过,DataFrame 是有style属 性的,所以在没有做任何修改的情况下,使用df.style应该和上图一样

Pandas也能修改样式?快速给你的数据换个Style!

现在让我们编写一个简单的样式函数,该函数可以将负数变为红色,使正数保持黑色。

def color_negative_red(val):

color = 'red' if val < 0 else 'black'
return 'color: %s' % color

现在来应用这段函数(思考Excel如何实现)

Pandas也能修改样式?快速给你的数据换个Style!

现在如果我们想突出显示每列中的最大值, 需要重新定义一个函数

def highlight_max(s):

is_max = s == s.max()
return ['background-color: yellow' if v else '' for v in is_max]

因为之前我们是以元素为单位判断,所以使用的是 .applymap 所以现在我们应对列进行 .apply 操作

Pandas也能修改样式?快速给你的数据换个Style!

现在可以使用

df.style.applymap(color_negative_red).apply(highlight_max)

来混合修改样式 或使用 .\ 实现

Pandas也能修改样式?快速给你的数据换个Style!

当然我们也可以通过修改样式函数并使用 .apply 来高亮整个DataFrame的最大值,

Pandas也能修改样式?快速给你的数据换个Style!

切片

当然我们也可以使用 subset 通过切片来完成对指定列进行样式修改,比如高亮部分列的最大值

df.style.apply(highlight_max, subset=['B', 'C', 'D'])

Pandas也能修改样式?快速给你的数据换个Style!

对于行和列切片,可以使用我们熟悉的 .loc ,不过目前仅支持基于标签的切片,不支持位置切片。

格式化输出

我们也可以使用 Styler.format 来快速格式化输出,比如将小数格式化为百分数

Pandas也能修改样式?快速给你的数据换个Style!

也支持使用字典或lambda表达式来更灵活的使用

Pandas也能修改样式?快速给你的数据换个Style!

当然是支持和之前的样式结合使用

Pandas也能修改样式?快速给你的数据换个Style!

内置样式

开发者们为了尽可能的让作为调包侠的我们使用起来更方便,已经内置了很多写好的样式,拿走就用,比如将空值设置为红色

Pandas也能修改样式?快速给你的数据换个Style!

或是结合seaborn使用热力图

Pandas也能修改样式?快速给你的数据换个Style!

现在我们就可以通过修改 Styler.background_gradient 来轻松的修改颜色等样式

Pandas也能修改样式?快速给你的数据换个Style!

最后我们可以将数据修改为 条形图 的样式,这也是我最喜欢的一个功能,能够快速的看出数据的变化!

Pandas也能修改样式?快速给你的数据换个Style!

在最新的版本中 可以进一步自定义条形图:我们现在可以将 df.style.bar 以零或中点值为中心来快速观察数据变化 ,并可以传递颜色 [color_negative, color_positive] ,比如使用 align='mid'

Pandas也能修改样式?快速给你的数据换个Style!

以上就是对Pandas中如何修改样式的一个简单介绍,更多的操作可以在官方文档 https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html 中找到与学习。

往期文章

小案例: Pandas的apply方法

Python语法快速入门

Python网络爬虫与文本数据分析

读完本文你就了解什么是文本分析

综述:文本分析在市场营销研究中的应用

从记者的Twitter关注看他们稿件的党派倾向?

Pandas时间序列数据操作

70G上市公司定期报告数据集

文本数据清洗之正则表达式

shreport库: 批量下载上海证券交易所上市公司年报

Numpy和Pandas性能改善的方法和技巧

漂亮~pandas可以无缝衔接Bokeh

YelpDaset: 酒店管理类数据集10+G

半个小时学会Markdown标记语法


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Linux Command Line

The Linux Command Line

William E. Shotts Jr. / No Starch Press, Incorporated / 2012-1-17 / USD 39.95

You've experienced the shiny, point-and-click surface of your Linux computer-now dive below and explore its depths with the power of the command line. The Linux Command Line takes you from your very ......一起来看看 《The Linux Command Line》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具