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章节

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑温州大学《机器学习课程》视频
本站qq群851320808,加入微信群请扫码:

【Python】五种Pandas图表美化样式汇总相关推荐

  1. python最快的循环方法_【转】【Python效率】五种Pandas循环方法效率对比

    [Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...

  2. 循环下标_【转】【Python效率】五种Pandas循环方法效率对比

    [Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...

  3. python五种可视化工具及六道常见面试题

    2017-12-26  吊炸天的  [Python五种可视化工具] 在 Python 中,将数据可视化有多种选择,正是因为这种多样性,何时选用何种方案才变得极具挑战性.本文包含了一些较为流行的工具以及 ...

  4. Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

    Python语言学习:基于python五种方法实现使用某函数名[func_01]的字符串格式('func_01')来调用该函数[func_01]执行功能 目录 问题提出 代码五种设计思路 T1方法:e ...

  5. Python五种实用的小技巧

    本文经"机器之心"授权,禁止二次转载. 作者:Peter Nistru 机器之心编译 参与:思 最开始学 Python 时,如果我能掌握这些方法,那么代码看起来会更加优美. 在本文 ...

  6. python五种基本数据类型_五大Python基础数据类型

    学习一门语言,往往都是从Hello World开始. 但是笔者认为,在一个黑框框中输出一个"你好,世界"并没有什么了不起,要看透事物的本质,熟悉一门语言,就要了解其底层,就是我们常 ...

  7. python五种常见的排序方法是_python中序列的排序,sorted方法、reversed方法的使用...

    简介 INTRODUCTION 包括字典排序.列表排序.升序.降序.逆序 一.基础概念 我们知道python中的内建序列包括字典.列表.元组.字符串等,序列是python中最基本的数据结构. 列表.元 ...

  8. Python五种常见的算法,你都了解么

    https://www.toutiao.com/a6641867428684890638/ 2019-01-02 19:57:48 欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资 ...

  9. python五种调试或排错的方法

    1.print,直接打印,比较简单而且粗暴 在代码中直接输入print+需要输出的结果,根据打印的内容判断即可 2.assert断言,很方便,测试人员常常在写自动化用例的时候用的比较多 如下,直接将预 ...

最新文章

  1. Swift2.0语言教程之类的属性
  2. SQL Server 2005 学习笔记之触发器简介[转]
  3. IP选路与动态选路协议(六)
  4. opencv vs2013开发环境配置
  5. SQL字符串中单引号与换行符的转义
  6. 【母亲节快乐】程序员的表达方式,了解一下?
  7. angularjs post返回html_Python 爬虫网页解析工具lxml.html(二)
  8. (*(void(*)())0)();
  9. 你们要的国内会议来了!部分截稿时间临近,入群享快速投稿服务
  10. Windows常用快捷键【快查字典版】
  11. Android期末复习题库
  12. Groovy从入门到精通
  13. C#简单银行管理系统含源码(.net C# web)
  14. 白话布隆过滤器BloomFilter
  15. 微软高级流格式ASF简介
  16. ODL中的Karaf命令使用
  17. Python---爬虫---爬取万余张图片,分门别类
  18. 英特尔45nm生产良率已达90%
  19. 现在做电商晚了吗?电商可以赚零花钱吗?
  20. 组合导航(六):惯性导航误差建模

热门文章

  1. @Autowired注解警告Field injection is not recommended
  2. 使用git下载giuhub中的项目
  3. mysql DbProviderFactories.GetFactory失败,解决方法
  4. ios开发时,在Xcode中添加多个targets进行版本控制
  5. android中 onResume()方法什么时候执行 ??(转)
  6. Flask的Debug功能非常酷
  7. .net 流(Stream) - 文件流、内存流、网络流
  8. javascript中的继承方式
  9. qt show widget_Qt中show()与exec()
  10. python phpstudy_Java、python及phpstudy的环境配置