我想生成一个堆积条形图(最好在seaborn中),但很高兴使用本机pandas绘图功能。让我介绍一些测试数据来说明一切。
In [353]: import pandas as pd
In [354]: import seaborn as sns
In [355]: df = pd.DataFrame({"Cat":["A", "B","A","B","A","B","A","B","C"], "Time":[0,0,1,1,0,0,1,1,1], "ID":[0,0,0,0,1,1,1,1,1]})
In [356]: df
Out[356]:
Cat Time ID
0 A 0 0
1 B 0 0
2 A 1 0
3 B 1 0
4 A 0 1
5 B 0 1
6 A 1 1
7 B 1 1
8 C 1 1
In [357]: df.groupby(["ID","Cat"]).count()
Out[357]:
Time
ID Cat
0 A 2
B 2
1 A 2
B 2
C 1
In [358]:
我想在这里看到的是,在 x 轴上,ID 在 y 轴上,我得到变量 Cat 堆叠的计数(时间列),例如对于 ID 1,我想看到一个堆叠的彩色条,其大小为 2、2 和 1。我尝试了以下操作但没有成功:
df.groupby(["ID","Cat"]).count().plot(kind="bar", stacked=True, x="ID")
因为它似乎无法处理多轴。非常感谢任何帮助!
unstack
Cat
:
(df.groupby(['ID', 'Cat'])['Time'].count().unstack()
.plot(kind='bar', stacked=True)
)
输出: