经常有粉丝问Pandas对于格式的美化操作,这不,他来了~

Pandas是一种高效的数据处理库,它以dataframe和series为基本数据类型,呈现出类似excel的二维数据。

在Jupyter中,会美化Pandas的输出。不同于IDE展示的文本形式,Jupyter可以通过CSS修改表格的样式。

我们在做excel表格的时候,常常会对重要数据进行highlight,或者用不同颜色表示数据的大小。这在Pandas中也是可以实现的,而且非常简洁。

Pandas提供了DataFrame.style属性,它会返回Styler对象,用以数据样式的美化。

一般的,我们需要将样式函数作为参数传递到下面方法中,就可以实现图表美化。

  • Styler.applymap: 作用于元素

  • Styler.apply:作用于行、列或整个表

下面通过一些例子,具体展示常用的美化形式。

一、高亮显示

为便于展示,数据示例是用的2021世界人口数量前十国家数据

import pandas as pd
data = pd.read_excel(r"E:\\jupyter_notebook\\2021世界人口数据.xlsx")
data

我们先看下该表的信息:

data.info()

除了前两列,其他列都为数字类型。

现在对指定列的最大值进行高亮处理:

def highlight_max(s):'''对列最大值高亮(黄色)处理'''is_max = s == s.max()return ['background-color: yellow' if v else '' for v in is_max]data.style.apply(highlight_max,subset=['2021人口', '2020人口', '面积','单位面积人口','人口增幅','世界占比'])

如果不想对元素背景高亮处理,也可以直接更改指定元素颜色,从而达到突出重点的目的。

标记单位面积人口列大于200的元素:

def color_red(s):is_max = s > 200return ['color : red' if v else '' for v in is_max]data.style.apply(color_red,subset=['单位面积人口'])

二、数据条显示

Excel条件格式里,有一个数据条显示方式,用以可视化表达数据大小。

Pandas Style方法中也有数据条的表达形式,用df.style.bar来实现。

还是用前面人口数据的例子,我们来看下如何操作数据条。

import pandas as pd
data = pd.read_excel(r"E:\\jupyter_notebook\\2021世界人口数据.xlsx")
# 数据条显示指定列数据大小
data.style.bar(subset=['2021人口', '2020人口'], color='#FFA500')

三、色阶显示

色阶也就是热力图,它和数据条一样,都用来表达数据大小。

Pandas Style中色阶的使用也很简单,用df.style.background_gradient实现。

import seaborn as sns# 使用seaborn获取颜色
cm = sns.light_palette("green", as_cmap=True)
# 色阶实现
data.style.background_gradient(cmap=cm,subset=['2021人口', '2020人口', '面积','单位面积人口','人口增幅','世界占比'])

可以通过选择最大最小颜色比例,调节色阶范围。

调节前:

import seaborn as sns# 色阶实现,这里使用内置色阶类型,不调节颜色范围
data.style.background_gradient(cmap='viridis',high=0.2,low=0.1,subset=['2021人口', '2020人口', '面积','单位面积人口','人口增幅','世界占比'])

调节后:

import seaborn as sns# 色阶实现,这里使用内置色阶类型,调节颜色范围
data.style.background_gradient(cmap='viridis',high=0.5,low=0.3,subset=['2021人口', '2020人口', '面积','单位面积人口','人口增幅','世界占比'])

四、百分比显示

有些数字需要百分比显示才能准确表达,比如说人口数据里的人口增幅、世界占比。

Pandas可以数据框中显示百分比,通过Styler.format来实现。

data.style.format("{:.2%}",subset=['人口增幅','世界占比'])

五、标记缺失值

数据集中可能会存在缺失值,如果想突出显示缺失值,该怎么操作?

这里有好几种常用的方法,一是用-符号替代,二是高亮显示

先创建一个带缺失值的表,还是用人口数据。

import pandas as pd
import numpy as np
data = pd.read_excel(r"E:\\jupyter_notebook\\2021世界人口数据.xlsx")
data.iloc[1, 4] = np.nan
data.iloc[3, 1] = np.nan
data.iloc[6, 6] = np.nan
data

上面数据中有三个缺失值,我们用-符号替代缺失值:

data.style.format(None, na_rep="-")

再试试对缺失值高亮显示:

data.style.highlight_null(null_color='red')

附:将样式输出到excel

Pandas中的数据美化样式不仅可以展示在notebook中,还可以输出到excel。

这里使用to_excel方法,并用openpyxl作为内核

import pandas as pd
import numpy as np
data = pd.read_excel(r"E:\\jupyter_notebook\\2021世界人口数据.xlsx")
data.style.background_gradient(cmap='viridis',subset=['2021人口', '2020人口', '面积','单位面积人口','人口增幅','世界占比']).\to_excel('style.xlsx', engine='openpyxl')

本文参考Pandas官方文档Styling章节

推荐阅读

Pandas处理数据太慢,来试试Polars吧!

懒人必备!只需一行代码,就能导入所有的Python库

绝!关于pip的15个使用小技巧

介绍10个常用的Python内置函数,99.99%的人都在用!

可能是全网最完整的 Python 操作 Excel库总结!

用Pandas来美化一波图表相关推荐

  1. mpAndroidchart 坐标和图表距离_【玩转图表系列】六步,美化你的图表,让老板刮目相看!...

    近期隆重推出图表分析系列,包括销售分析.盈亏分析.费用分析.趋势分析.进度分析等,通过双坐标图.甘特图.瀑布图.双层饼图等系列图表精美展现,专业高效,让你从初级学到高级.从小白跨越专业. 今天开启我们 ...

  2. Pandas数据可视化工具:图表工具-Seaborn

    内容来源:https://www.jiqizhixin.com/articles/2019-01-30-15 简介 在本文中,我们将研究Seaborn,它是Python中另一个非常有用的数据可视化库. ...

  3. pandas中强大的绘制图表功能——DataFrame.hist(),以及统计分析函数——DataFrame.describe()

    pandas中具有很多很强大的图表绘制功能,今天介绍一个简单好用的绘制数据框DataFrame中某一列数据分布直方图的函数--DataFrame.hist(),顺便介绍一个统计分析函数DataFram ...

  4. pandas简单绘制图表

    在阅读本篇博文前请详细阅读这篇前置博文 pandas的简单使用_wolfwalker的博客-CSDN博客 目录 一.绘制折线图 二.绘制柱状图 三.绘制条形图 四.使用seaborn美化我们的图表 绘 ...

  5. 数据大屏产品介绍PPT_有这些图表美化工具,十分钟配出炫酷的数据可视化大屏...

    有这些图表美化工具,十分钟配出炫酷的数据可视化大屏 数据可视化难,试试这些图表美化 图表可视化,是很多同学头疼的问题,因此找到一款操作简便,少花钱,可编辑数据,导出样式多的图表生成网站迫在眉睫. 1. ...

  6. Excel图表美化及样式设置教程

    EXCEL图表一直是学习EXCEL程序的重点,图表的作用直观的显示数据,今天通过一个柱形图美化的实例为同学们进行讲解.图表美化的重要知识点有"预设图表样式进行美化"."自 ...

  7. 第四章 图表样式的美化

    第四章 图表样式的美化 这节课主要学习了图表样式的美化,包括图表样式的概括.使用颜色选择线型.添加数据标记.设置字体.切换主题风格和填充区域. 下面是本节课的一些练习: import numpy as ...

  8. 个人永久性免费-Excel催化剂功能第83波-遍历文件夹内文件信息特别是图像、音视频等特有信息...

    在过往的功能中,有体现出在Excel上管理文件的极大优势,在文件的信息元数据中,有图片和音视频这两类特有的属性数据,此篇对过往功能的一个补充,特别增加了图片和音视频信息的遍历功能. 使用场景 在文件管 ...

  9. 个人永久性免费-Excel催化剂功能第85波-灵活便捷的批量发送短信功能(使用腾讯云接口)...

    微信时代的今天,短信一样不可缺席,大系统都有集成短信接口. 若只是临时用一下,若能够直接在Excel上加工好内容就可以直接发送,这些假设在此篇批量群发短信功能中都为大家带来完美答案. 业务场景 不多说 ...

最新文章

  1. ubuntu php设置,关于ubuntu php环境设置详解-PHP问题
  2. 表单元素聚焦状态回车提交表单问题小记
  3. NVIDIA SMI 无法与 nvidia driver 通信
  4. java 的数据类型转换_java数据类型转换汇总
  5. python3正则表达式判断ipv4_Python 正则表达式验证IPv4地址
  6. 中国知网 博硕士论文 PDF下载 及书签自动生成
  7. iOS测试技巧:GPX文件修改经纬度
  8. Sketch56.1汉化
  9. 初步学习网站分析工具
  10. QT学习11:clicked和toggled信号
  11. 用esp8266驱动0.96寸OLED屏幕 太空人动画
  12. python sobel算子_python自编程序实现——robert算子、sobel算子、Laplace算子进行图像边缘提取...
  13. Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现
  14. 致COSCon’20最可爱的人们~
  15. 杭州还不错的IT公司,想跳槽了,不知道下一站在哪里
  16. 互联网可靠?360云盘见证了这一切
  17. 个人项目——基于STM32的智能教务显示系统
  18. 对整行tr除最后一列外的每一列设置点击事件
  19. vue element 日期范围选择器限制只能选今天之前的时间,或者只能选今天之后的时间
  20. 《基于机器视觉的输电线路交叉点在线测量方法及技术方案》论文笔记

热门文章

  1. postman发送post请求,服务器日志确保GET请求错误“ PageNotFound:208 Request method ‘GET‘ not supported”
  2. 使用VMware安装CentOS7详请(自己做过测试)
  3. 揭开互联网公司的神秘面纱,数据解读那些slay整个行业的互联网公司
  4. php soap实例讲解
  5. php大文件上传php.ini配置
  6. MySQL主从复制从机验证报错:ERROR 3021(HY000):this operation cannot be performed with a
  7. python中文词云生成_Python 词云生成
  8. 流水调度问题c语言,基于遗传算法的流水车间调度问题汇总.doc
  9. 计算机软件员证书用途,软考证书的五大好处(详解)
  10. 怎么tp玩家_DNF:被误制裁玩家痛苦下跪,求TP为其复查:我只是在家搬个砖!...