18

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

 4 years ago
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.
neoserver,ios ssh client

前言

在之前的很多文章中我们都说过, 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颜色代码即可完成样式修改,下面看一些示例。

一些例子

基本样式

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

2MZNryY.png!web

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

iqAnQ3j.png!web

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

def color_negative_red(val):

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

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

v2MRzmi.png!web

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

def highlight_max(s):

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

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

7bi6riE.png!web

现在可以使用

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

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

ZRb2ieE.png!web

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

fya2i2I.png!web

切片

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

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

fEnUzaA.png!web

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

格式化输出

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

e6rUFzf.png!web

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

7baaqmY.png!web

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

jArM7zI.png!web

内置样式

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

JbIVNbI.png!web

或是结合seaborn使用热力图

FfMBVjM.png!web

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

bEFfqeB.png!web

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

6JJrmaI.png!web

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

eiuyAzu.png!web

以上就是对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标记语法


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
    • 掘金 juejin.im 6 years ago
    • Cache

    通过CSS变量修改样式

    问题: js怎么去修改css伪类样式呢?但是js并没有伪类选择器,那么该怎么办呢?网上有不少方法,比如通过切换元素的类、在style中动态插入新的样式等。 那么这里再来一种方法,设置css变量(var),通过js去改变这个变量来实现。 示例: 改变div的ho

  • 56
    • 掘金 juejin.im 6 years ago
    • Cache

    CSS滚动条样式修改 && 真!全屏

    css3可以自定义滚动条样式,今天发现了一个花式玩法,一起看看? 之前写过网页时滚动条时是不是都这个样子的呢 这个滚动条好看么? 废话肯定不好看! 如果设计湿给个带背景的设计图,又当如何呢? 是不是更丑了! 前方高能登场!非战斗人员请火速避开!

  • 13

    工作中,经常会用到一些分割线,这些分割线平时一般都用div来模拟,记得当时ie浏览器hr标签样式修改经常有问题。随着时代的进步,技术的发展。目前hr标签可以大胆的使用在工作中了,且可以自定义出各种样式,当然,今天的hr样式你也可以同样用div实现,不过hr分...

  • 3
    • zhuanlan.zhihu.com 3 years ago
    • Cache

    五种Pandas图表美化样式汇总

    五种Pandas图表美化样式汇总朱卫军公号:Python大数据分析,关注进学习群Pandas是一...

  • 5
    • segmentfault.com 3 years ago
    • Cache

    vue 元素样式修改

    vue 元素样式修改发布于 21 分钟前这里是使用错误。ref有两种情况:第一,如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素。第二,如果用在子组件上,引用就...

  • 6
    • segmentfault.com 3 years ago
    • Cache

    HTML修改滚动条样式

    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