You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Pandas分组统计后调用.plot.bar()无法生成堆叠柱状图,如何实现?

如何生成堆叠柱状图?

我懂你的问题——你已经通过分组查询拿到了正确的统计数据,但直接调用.plot.bar()出来的是分散的单条柱子,不是想要的堆叠效果。别担心,只需要调整一下数据结构就能解决。

首先,你当前的分组结果是一个多级索引的Series,每个(department, status)组合都是独立的条目,直接绘图自然是分开的柱子。要做堆叠柱状图,我们需要把status从索引转成列,让每个部门对应一行,不同状态的数值并列成列——这一步用unstack()就能实现。

具体步骤:

  1. 先处理分组结果,将状态列展开:
# 获取分组统计结果并将status转为列
counts_df = df.groupby(['department', 'status'])['c_name'].count().unstack()
# 填充可能存在的空值(比如有的部门没有某个状态的数据)
counts_df = counts_df.fillna(0)
  1. 然后绘制堆叠柱状图:
counts_df.plot.bar(stacked=True)

为什么这样做?

unstack之后,你的数据结构会变成类似下面的格式(以你的统计结果为例):

department                          Accepted  Pending  Rejected
Agriculture                               3      2.0        13
Department of Education and Training     290      0.0        65
Higher Education                         424     24.0        92
Medical Education and Research            34      3.0         1

这样每个部门作为x轴的一个类别,不同状态的数值就可以在同一个柱子里堆叠起来了。运行上面的代码,就能得到你想要的堆叠柱状图啦!

内容的提问来源于stack exchange,提问作者shantanuo

火山引擎 最新活动