五种Pandas图表美化样式汇总

来源:朱卫军 知乎 日期:2021-06-18

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

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

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

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

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

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

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

一、高亮显示

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

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

我们先看下该表的信息:

  1. data.info() 

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

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

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

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

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

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

二、数据条显示

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

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

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

  1. import pandas as pd 
  2. data = pd.read_excel(r"E:\\jupyter_notebook\\2021世界人口数据.xlsx"
  3. # 数据条显示指定列数据大小 
  4. data.style.bar(subset=['2021人口''2020人口'], color='#FFA500'
    A+
声明:本文转载自其它媒体,转载目的在于传递更多信息,并不代表赞同其观点和对其真实性负责。