Python——对数据表格分类统计 绘制堆积条形图

由于这学期的期末就要参加博士候选人资格考试,所以想要维持每周一更的频率心有余而力不足。本周放春假,就见缝插针更新一篇。

之前在学习 R 的数据可视化时,ggplot2 可以对数据表格进行分类统计,根据变量值对观测对象用颜色或形状进行分类显示,这样可以快速地绘制条形图进行比对。但是,使用 Python 流行的可视化包 matplotlib 却没有这么便捷,很难和数据表格联动。由于 pandas 里面内置了 matplotlib 的绘图函数,所以还是有办法解决堆积条形图的绘制问题的。

堆积条形图

ggplot2 绘制堆积条形图

首先,我使用 ggplot2 绘制堆积柱形图,与后文的 Python 绘图做对比。使用 ggplot2 自带数据 diamonds 为例进行说明,根据变量 cut 进行分组绘制条形图,在每组中根据变量 clarity 分小组对每个组别进行颜色填充。

### 加载ggplot2library(tidyverse)### 绘制堆积柱形图ggplot(data = diamonds, aes(x = cut)) +    geom_bar(aes(fill = clarity))
Python——对数据表格分类统计 绘制堆积条形图

ggplot2 的绘图函数自动为我们执行了 statistical transformations 分组统计,即以下分组统计。

count(diamonds, cut, clarity)
Python——对数据表格分类统计 绘制堆积条形图

Python 分类统计绘制堆积条形图

其实现在 Python 已经可以调用 ggplot2 的绘图语法,在 Python 中安装 plotnine 即可。不过,我们还是先尝试使用 matplotlib 和 pandas 绘制,还是使用 diamonds 进行解释说明,在交互模式下执行命令。

import pandas as pdimport matplotlib.pyplot as pltfrom plotnine import *from plotnine.data import *%matplotlib### 查看数据diamonds
Python——对数据表格分类统计 绘制堆积条形图

绘制堆积条形图,需要获得符合格式的数据表格。分组统计获得的数据表格每行对应条形图的分组,每列对应每组中的细分小组。以下函数是先让 diamonds 根据变量 cut 进行分组,然后选中 clarity 对其进行计数,这样我们会获得带有 MultiIndex 的 Series 对象,然后我们通过对象的 unstack() 方法将其变成数据表格。

### 分类统计diamonds.groupby(["cut"]).clarity.value_counts().unstack()
Python——对数据表格分类统计 绘制堆积条形图

上面的这张数据表格就符合绘制堆积柱形图的格式要求,每行是条形图的组别,每列是条形图组别中的细分小组,我们可以在此基础上继续使用 pandas 内置的 matplotlib 绘图函数绘制条形图。

diamonds.groupby(["cut"]).clarity.value_counts().unstack().plot.bar()
Python——对数据表格分类统计 绘制堆积条形图

默认绘制的分类条形图将每组中的细分小组沿 x 轴横向排列,我们可以添加 stacked=True 参数将其设定为堆积条形图。

diamonds.groupby(["cut"]).clarity.value_counts().unstack().plot.bar(stacked=True)
Python——对数据表格分类统计 绘制堆积条形图

如果调用 plotnine  绘制,所用函数和语法与 ggplot2 一致。

(    ggplot(data=diamonds, mapping=aes(x="cut")) +        geom_bar(mapping=aes(fill="clarity")))
Python——对数据表格分类统计 绘制堆积条形图

以上,就是今天的推送内容。

来源:爱尔兰粉公爵,本文观点不代表自营销立场,网址:https://www.zyxiao.com/p/125197

发表评论

登录后才能评论
侵权联系
返回顶部