

Pandas也能修改样式?快速给你的数据换个Style!
source link: http://mp.weixin.qq.com/s?__biz=MzI1MTE2ODg4MA%3D%3D&%3Bmid=2650073909&%3Bidx=1&%3Bsn=30cb9a2cab6e1080f2071eb6d77bc3ba
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言
在之前的很多文章中我们都说过,
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颜色代码即可完成样式修改,下面看一些示例。
一些例子
基本样式
首先我们创建一组没有任何样式的数据
我们之前说过,DataFrame 是有style属 性的,所以在没有做任何修改的情况下,使用df.style应该和上图一样
现在让我们编写一个简单的样式函数,该函数可以将负数变为红色,使正数保持黑色。
def color_negative_red(val):
color = 'red' if val < 0 else 'black'
return 'color: %s' % color
现在来应用这段函数(思考Excel如何实现)
现在如果我们想突出显示每列中的最大值,
需要重新定义一个函数
def highlight_max(s):
is_max = s == s.max()
return ['background-color: yellow' if v else '' for v in is_max]
因为之前我们是以元素为单位判断,所以使用的是
.applymap
,
所以现在我们应对列进行
.apply
操作
现在可以使用
df.style.applymap(color_negative_red).apply(highlight_max)
来混合修改样式 或使用 .\ 实现
当然我们也可以通过修改样式函数并使用 .apply 来高亮整个DataFrame的最大值,
切片
当然我们也可以使用 subset 通过切片来完成对指定列进行样式修改,比如高亮部分列的最大值
df.style.apply(highlight_max, subset=['B', 'C', 'D'])
对于行和列切片,可以使用我们熟悉的
.loc
,不过目前仅支持基于标签的切片,不支持位置切片。
格式化输出
我们也可以使用 Styler.format 来快速格式化输出,比如将小数格式化为百分数
也支持使用字典或lambda表达式来更灵活的使用
当然是支持和之前的样式结合使用
内置样式
开发者们为了尽可能的让作为调包侠的我们使用起来更方便,已经内置了很多写好的样式,拿走就用,比如将空值设置为红色
或是结合seaborn使用热力图
现在我们就可以通过修改 Styler.background_gradient 来轻松的修改颜色等样式
最后我们可以将数据修改为 条形图 的样式,这也是我最喜欢的一个功能,能够快速的看出数据的变化!
在最新的版本中
可以进一步自定义条形图:我们现在可以将
df.style.bar
以零或中点值为中心来快速观察数据变化
,并可以传递颜色
[color_negative, color_positive]
,比如使用
align='mid'
:
以上就是对Pandas中如何修改样式的一个简单介绍,更多的操作可以在官方文档
https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html
中找到与学习。
往期文章
Recommend
-
144
thinkphp5 分页样式修改 修改文件:/thinkphp/library/think/paginator/driver/Bootstrap.php 原有分页不带省略 <?php// +----------------------------------------------------------------------
-
54
原文地址:Spantastic text styling with Spans 原文作者:Florina Muntenescu 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:wzasd 校对者:luochen199
-
41
问题: js怎么去修改css伪类样式呢?但是js并没有伪类选择器,那么该怎么办呢?网上有不少方法,比如通过切换元素的类、在style中动态插入新的样式等。 那么这里再来一种方法,设置css变量(var),通过js去改变这个变量来实现。 示例: 改变div的ho
-
56
css3可以自定义滚动条样式,今天发现了一个花式玩法,一起看看? 之前写过网页时滚动条时是不是都这个样子的呢 这个滚动条好看么? 废话肯定不好看! 如果设计湿给个带背景的设计图,又当如何呢? 是不是更丑了! 前方高能登场!非战斗人员请火速避开!
-
13
工作中,经常会用到一些分割线,这些分割线平时一般都用div来模拟,记得当时ie浏览器hr标签样式修改经常有问题。随着时代的进步,技术的发展。目前hr标签可以大胆的使用在工作中了,且可以自定义出各种样式,当然,今天的hr样式你也可以同样用div实现,不过hr分...
-
3
五种Pandas图表美化样式汇总朱卫军公号:Python大数据分析,关注进学习群Pandas是一...
-
5
vue 元素样式修改发布于 21 分钟前这里是使用错误。ref有两种情况:第一,如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素。第二,如果用在子组件上,引用就...
-
6
HTML修改滚动条样式发布于 今天 15:25 直接上代码吧 .test-div { width: 100px; max-height: 100px; padding-right:...
-
7
上一篇介绍了DataFrame的显示参数,主要是对DataFrame中值进行调整。 本篇介绍DataFrame的显示样式的调整,显示样式主要是对表格本身的调整,比如颜色,通过颜色可以突出显示重要的值,观察数据时可以更加高效...
-
5
最近在群里,有个小伙伴问了这么一道很有趣的问题: CSS 能否实现,容器再某个高度下是某种表现,一旦超出某个高度,则额外展示另外一些内容 为了简化实际效果,我们看这么一张示意效果图:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK