第一句子大全,网罗天下好句子,好文章尽在本站!

对比Excel 一文掌握Pandas表格条件格式(可视化)

时间:2024-01-09

「来源: |Python爬虫与数据挖掘 ID:crawlerpython」回复书籍即可获赠Python从入门到进阶共10本电子书今日鸡汤诸葛大名垂宇宙,宗臣遗像肃清高。大

友情提示:本文共有 5577 个字,阅读大概需要 12 分钟。

「来源: |Python爬虫与数据挖掘 ID:crawler_python」

回复“书籍”即可获赠Python从入门到进阶共10本电子书

诸葛大名垂宇宙,宗臣遗像肃清高。

大家好,我是才哥。

本来这周不是加班周,但是毕竟项目赶进度,还是需要加班着,咱们更文又变得慢了起来。

最近有粉丝询问Pandas表格可视化的一些问题,刚好前段时间也看过,那么就结合之前处理Excel时的条件格式对着来看吧。

所以,今天咱们隆重介绍一下Excel条件格式与Pandas的表格可视化,走起!

目录:

1. 概述2. 突出显示单元格2.1. 高亮缺失值2.2. 高亮最大值2.3. 高亮最小值2.4. 高亮区间值2.5. 高亮分位数3. 色阶(背景及文本渐变色)3.1. 背景渐变色3.2. 文本渐变色4. 数据条5. 数据格式化6. 自定义格式函数7. 其他1. 概述

咱们先简单介绍一下什么是表格条件格式可视化,以常用的Excel为例说明。

在Excel菜单栏里,默认(选择)开始菜单,在中间部位有个条件格式控件,里面就是关于表格条件格式的方方面面。主要包含突出显示单元格规则、最前/最后规则、数据条、色阶、图标集以及规则管理等。

条件格式基于以上,我们其实可以通过函数方式进行多种条件的综合,让Excel表格可视化丰富多彩,比如以下截图展示的就是色阶效果!

色阶案例,数据截止8月5日在上图中,我们对每列单独进行条件格式-色阶设置,绿色->红色 代表数值从小到大,可以很直观的快速感受数值表现。

所谓 表格条件格式可视化,就是对表格的数据按照一定的条件进行可视化的展示(这里的可视化更多是指单元格背景色、字体颜色以及文本格式显示等)。

那么,Pandas作为表格化的数据处理工具,我们可以如何实现 表格条件格式可视化呢?!

大杀器:df.style

2. 突出显示单元格

在Excel条件格式中,突出显示单元格规则提供的是大于、小于、等于以及重复值等内置样式,不过在Pandas中这些需要通过函数方法来实现,我们放在后续介绍。这里介绍Pandas突出显示缺失值、最大值、最小值、区间值的函数方法以及Excel实现这些操作的自定义操作。

2.1. 高亮缺失值

df.style.highlight_null()

Signature:df.style.highlight_null( null_color: "str" = "red", subset: "Subset | None" = None, props: "str | None" = None,) -> "Styler"Docstring:Highlight missing values with a style.null_color用于指定高亮的背景色,默认是红色subset用于指定操作的列或行props用于突出显示CSS属性(后面案例中会涉及到)

比如,我们可以指定高亮的背景色为橙色(颜色可以是英文名称)

比如,我们可以指定高亮的背景色为紫红色(颜色可以是16进制)

2.2. 高亮最大值

df.style.highlight_max()

Signature:df.style.highlight_max( subset: "Subset | None" = None, color: "str" = "yellow", axis: "Axis | None" = 0, props: "str | None" = None,) -> "Styler"Docstring:Highlight the maximum with a style.subset用于指定操作的列或行color用于指定颜色,默认是黄色axis用于指定行最大、列最大或全部,默认是列方向最大

这里我们发现对于中文也有列最大高亮,至于为啥是蒙古其实我也不清楚,为了避免出现这种情况,有两种方法:①将这一列设置为索引(这里不做演示),②采用subset指定

指定颜色为灰色

显示全部最大值

那么,Excel如何显示最大值呢?这里我们以显示全部最大值为例展开介绍,逻辑如下:

通过函数MAX获取数据区域的最大值然后编辑格式满足单元格值等于这个最大值即可操作为:选中数据区域,进行条件格式设置->编辑格式规则

具体规则如下图:

我们就可以得到想要的效果:

同样的道理,我们可以根据需求高亮列或行的最大值、最小值等

2.3. 高亮最小值

df.style.highlight_min()

参数基本同高亮最大值,这里不再赘述,看案例

链式调用最大最小值高亮

2.4. 高亮区间值

df.style.highlight_between

Signature:df.style.highlight_between( subset: "Subset | None" = None, color: "str" = "yellow", axis: "Axis | None" = 0, left: "Scalar | Sequence | None" = None, right: "Scalar | Sequence | None" = None, inclusive: "str" = "both", props: "str | None" = None,) -> "Styler"Docstring:Highlight a defined range with a style.subset用于指定操作的列或行color用于指定颜色,默认是黄色axis用于指定行、列或全部,如果left或right作为序列给出,则应用于这些序列的边界left用于指定区间最小值right用于指定区间最大值inclusive用于确定是否左右闭包,可选"both", "neither", "left", "right"props用于突出显示CSS属性

高亮数量在[20, 30]的单元格

props用于突出显示CSS属性,案例中我们将待高亮的部分显示为字体颜色-白色,背景色-紫色

金牌数区间[20, 30]、银牌数区间[10, 20]、铜牌数区间[5, 10]

2.5. 高亮分位数

df.style.highlight_quantile()

Signature:df.style.highlight_quantile( subset: "Subset | None" = None, color: "str" = "yellow", axis: "Axis | None" = 0, q_left: "float" = 0.0, q_right: "float" = 1.0, interpolation: "str" = "linear", inclusive: "str" = "both", props: "str | None" = None,) -> "Styler"Docstring:Highlight values defined by a quantile with a style.subset用于指定操作的列或行color用于指定颜色,默认是黄色axis用于指定行、列或全部q_left用于指定分位数左边界,默认是0q_right用于指定分位数右边界,默认是1inclusive用于确定是否左右闭包,可选"both", "neither", "left", "right"props用于突出显示CSS属性

比如,高亮各列奖牌数前15%的值

3. 色阶(背景及文本渐变色)

色阶部分包含背景渐变色和文本渐变色

3.1. 背景渐变色

在Excel中,直接通过条件格式->色阶 操作即可选择想要的背景渐变色效果

而在Pandas中,我们可以通过df.style.background_gradient()进行背景渐变色的设置。

Signature:df.style.background_gradient( cmap="PuBu", low: "float" = 0, high: "float" = 0, axis: "Axis | None" = 0, subset: "Subset | None" = None, text_color_threshold: "float" = 0.408, vmin: "float | None" = None, vmax: "float | None" = None, gmap: "Sequence | None" = None,) -> "Styler"Docstring:Color the background in a gradient style.cmap用于指定matplotlib色条low和high用于指定最小最大值颜色边界,区间[0, 1]axis用于指定行、列或全部,默认是列方向subset用于指定操作的列或行text_color_threshold用于指定文本颜色亮度,区间[0, 1]vmin和vmax用于指定与cmap最小最大值对应的单元格最小最大值

low和high用于指定最小最大值颜色边界,区间[0, 1]

cmap用于指定matplotlib色条,采用seaborn美化样式

text_color_threshold用于指定文本颜色亮度,区间[0, 1]

vmin和vmax用于指定与cmap最小最大值对应的单元格最小最大值(10以下同色,70以上同色)

我们可以看到以上对于缺失值来说,其背景色是黑色,我们可以通过链式方法和高亮缺失值对缺失值背景色进行修改

3.2. 文本渐变色

文本渐变色顾名思义就是对单元格的文本进行颜色渐变,可以通过df.style.text_gradient()来操作,其参数和背景渐变色基本一致。

4. 数据条

在Excel中,直接通过条件格式->数据条 操作即可选择想要的数据条效果

而在Pandas中,我们可以通过 df.style.bar()来进行数据条绘制

Signature:df.style.bar( subset: "Subset | None" = None, axis: "Axis | None" = 0, color="#d65f5f", width: "float" = 100, align: "str" = "left", vmin: "float | None" = None, vmax: "float | None" = None,) -> "Styler"Docstring:Draw bar chart in the cell backgrounds.subset用于指定操作的列或行axis用于指定行、列或全部,默认是列方向color用于指定数据条颜色width用于指定数据条长度,默认是100,区间[0, 100]vmin和vmax用于指定与数据条最小最大值对应的单元格最小最大值align 数据条与单元格对齐方式,默认是left左对齐,还有zero居中和mid位于(max-min)/2

比如,奖牌数(不算总的)最低0最高40+颜色为橙色+居中展示,金牌差数据条长度为50(也就是单元格一半的长度)、银牌差mid对齐+数据条为单元格一半长度+正负显示不同颜色

5. 数据格式化

调整数据格式用到df.style.format()

Signature:df.style.format( formatter: "ExtFormatter | None" = None, subset: "Subset | None" = None, na_rep: "str | None" = None, precision: "int | None" = None, decimal: "str" = ".", thousands: "str | None" = None, escape: "str | None" = None,) -> "StylerRenderer"Docstring:Format the text display value of cells.formatter 显示格式subset用于指定操作的列或行na_rep用于指定缺失值的格式precision用于指定浮点位数decimal用于用作浮点数、复数和整数的十进制分隔符的字符,默认是.thousands用作浮点数、复数和整数的千位分隔符的字符escape用于特殊格式输出(如html、latex等,这里不做展开,可参考官网)比如,我们给数据加上单位枚,缺失值显示为无

设置小数点位数为0

指定列进行格式化

分别对指定列进行单独格式化

6. 自定义格式函数

通过传递样式函数来自定义格式:

applymap() (elementwise):接受一个函数,它接受一个值并返回一个带有 CSS 属性值对的字符串。apply()(column-/ row- /table-wise): 接受一个函数,它接受一个 Series 或 DataFrame 并返回一个具有相同形状的 Series、DataFrame 或 numpy 数组,其中每个元素都是一个带有 CSS 属性的字符串-值对。此方法根据axis关键字参数一次传递一个或整个表的 DataFrame 的每一列或行。对于按列使用axis=0、按行使用axis=1,以及一次性使用整个表axis=None。

比如,我们定义一个函数,如果金牌数<银牌数,则高亮金牌数这一列对应的值

比如,我们还可以定义函数,如果金牌数<银牌数,则这一行数据都高亮

又或者,我们可以根据不同的比值对每行进行不同的高亮

关于以上函数的写法,我们还可以调用numpy的where和repeat方法进行优化,如:

7. 其他

还有一些小操作,比如添加标题、隐藏索引、隐藏指定列等等

添加标题

隐藏索引

隐藏指定列

设置属性

如果一些单元格属性和单元格值无关,我们可以通过df.style.set_properties()来进行定制化操作,比如:背景色-黑色,字体颜色-草绿色,边框颜色-白色。(css样式)

选中放大

鼠标选择单元格会有放大效果

效果演示导出Excel

就直接to_excel就行了,dfs = df.style.xxx,然后dfs.to_excel()

导出的excel截图导出html

以上就是本次全部内容,大家感兴趣的话可以自己演示一遍熟悉熟悉,又或者想想日常工作中的一些条件格式需求,然后通过Pandas演示出来效果看看。

-------------------End -------------------

本文如果对你有帮助,请点赞收藏《对比Excel 一文掌握Pandas表格条件格式(可视化)》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
显示评论内容(3)
  1. 虎恋雪狼2024-01-16 19:52虎恋雪狼[新疆网友]101.201.162.29
    Excel和Pandas其实可以相互补充使用,但是Pandas的可视化功能更胜一筹。
    顶10踩0
  2. 落笔神殇2024-01-14 06:59落笔神殇[澳门网友]45.114.139.226
    学习Pandas的表格条件格式确实能让数据更加直观易懂。
    顶43踩0
  3. 齐郁荷2024-01-11 18:07齐郁荷[河北省网友]43.230.240.233
    Excel虽然方便易用,但是Pandas的表格条件格式更具可视化效果。
    顶0踩0
相关阅读
吸引眼球的论文图表制作

吸引眼球的论文图表制作

...而表用来展示数据的大小。如果数据量不多,则可以省去表格,直接用文字表达。本期先重点分析图,再讲述表的制作。由于表的制作较为简单,因此本期把重点放在图的制作上。1.图的要求和功能1.1 图的要求经验丰富的审稿人...

2023-09-18 #经典句子

从Excel复制到Word的表格只保留文字的几种方式

从Excel复制到Word的表格只保留文字的几种方式

前言Excel是处理数据表格的极佳方式,但是有时候需要将处理好的表格输到Word中,如何进行高效转换呢,下面就介绍几种实用的从Excel复制到Word的表格只保留文字的几种方式正式开始之前,说明一下数据系统环境硬件:联想笔记...

2009-07-06 #经典句子

EXCEL怎么使用IF语句(IF函数)

EXCEL怎么使用IF语句(IF函数)

...果不满足则返回另一个值(错误返回)。实例:1.在如下表格中,D列直接输入if函数:2.输入好之后回车键,即可完成判断。3.如果是多条件判断,则可以用if嵌套语句,例如:需要区分良好、及格、不及格,则需要在错误返回值...

2023-06-17 #经典句子

「Excel技巧」英文字母大小写的转换几秒钟就搞定 就是这么任性

「Excel技巧」英文字母大小写的转换几秒钟就搞定 就是这么任性

Excel表格中,大写字母要变小写,小写字母要变大写,是不是经常会遇到的事儿。数量少的话,没关系,我一个一个去转,去输入。如果数量多的话,这么操作的话,可有点担心会累坏了我的老腰。今天不妨来挖一挖Excel英文字...

2014-03-19 #经典句子

Excel整理英文单词格式的3大函数

Excel整理英文单词格式的3大函数

Excel整理英文单词格式的3大函数。Excel表格里面发现有很多英文单词大小写很不规范怎么办?一个一个字母修改的话将会很麻烦,小Q来教你用一个函数批量修改英文单词格式。1、选择Excel一个空白的单元格。2、输入=PROPER(需要转...

2011-05-13 #经典句子

VBA代码常用语句第81

VBA代码常用语句第81

...使 Excel 可见98 ExcelSheet.Application.Cells(1, 1).Value = "Data" 在表格的第一个单元中输入文本99 ExcelSheet.SaveAs "C:TEST.XLS" 将该表格保存到C:test.xls 目录100 ExcelSheet.Application.Quit 关闭 Excel101 Set ExcelSheet = Nothing 释放该对象变量102 Dim xlAp...

2023-07-02 #经典句子

自学文员入门教程

自学文员入门教程

...员,最基本的就是会使用电脑,会录入一些数据,简单的表格排版,也就是我们说的word制作表格,基本的办公软件会使用就行。做文员要求打字要比较快。平时没事也就是打印和复印一些文件。一、首先学习电脑入门知识:学...

2009-11-17 #经典句子

Word文档表格中快速删除回车和调整段落

Word文档表格中快速删除回车和调整段落

Word文档中经常会穿插表格,有的表格可能是在其他地方复制的,这样就存在格式上需要做调整(调整格式主要还是为了美观)。如图一这种多出来的回车一个一个的删,表格小还好,如果表格占有很大的篇幅就真的很费时间,...

2024-01-08 #经典句子