如何从分组和计数的 pandas 框架绘制堆积条形图

How to plot a stacked bar chart from a pandas frame which is grouped and counted

提问人:Steve 提问时间:11/3/2023 最后编辑:Steve 更新时间:11/3/2023 访问量:60

问:

我的目标是生成一个简单的堆积条形图,其中 VALUE 为 X 轴,每种类型是条形堆栈,number(count) 是每个条形堆栈的 y 值。

我得到了数据框分组的结果,如下所示:

价值 类型
0.0 0 16
1 26
2 15
3 18
1.0 1 15
2 2
3 10
2.0 0 10
1 175
2 99
3 11
15 100
3.0 0 92
1 20
2 17
3 26
15 1

名称:VALUE,dtype:int64

我通过以下方式从大型数据帧中创建了此内容: 数据输出 = df.groupby(['VALUE','TYPE']).agg('VALUE').count()

我想遍历数据帧并访问“计数”,然后将不均匀的结果推送到堆叠图中。

我被困在循环浏览这些数据并访问计数。 对于 I,Enumerate(df.index) 中的 (val, typ): 打印(val) 打印(典型值)

如何访问计数?

对于 val,在 df.groupby(level=0) 中键入: 打印(val) 打印(典型值) 破

数据已存在,但不确定如何访问计数列。

价值 类型
0.0 0 16
1 26
2 15
3 18

有没有更简单的方法?或者有人可以解释我如何调节这些数据。

Python pandas 数据帧 循环 多索引

评论


答:

2赞 Scott Boston 11/3/2023 #1

IIUC,你有一个多索引序列 s,如下所示:

VALUE  TYPE
0.0    0        16
       1        26
       2        15
       3        18
1.0    1        15
       2         2
       3        10
2.0    0        10
       1       175
       2        99
       3        11
       15      100
3.0    0        92
       1        20
       2        17
       3        26
       15        1
Name: count, dtype: int64

为方便起见,我将系列名称重命名为“count”。

s.unstack().plot.bar(stacked=True)

输出:

enter image description here

评论

1赞 Steve 11/4/2023
谢谢斯科特。是的,系列抓住了我。我将其从系列改回数据框并能够使用它,但您的解决方案很棒 - 实现了一衬里 - 感谢您的回复和解决方案。