我的数据框有两列'position'和'rankvalue'。
rankvalue position
0 D 3
1 D 20
2 S 1
3 D 80
4 D 100
5 S 1
6 D 3
7 D 100
8 D 20
9 D 80
10 D 20
11 D 80
12 S 1
13 D 3
14 D 100
15 S 1
16 VS 3
17 LS 100
18 D 20
19 LS 80
我按“位置”对其进行分组,然后计算每个位置的“rankvalue”频率:
aggre= results.groupby(['position','rankvalue'])['position'].agg({'Frequency':'count'})
这会产生百分比:
final = aggre.groupby(level=0).apply(lambda x:100 * x / float(x.sum()))
如何根据数据框'final'生成堆积条?
final.plot(kind='bar', stacked=True) # this does not produce intended stacked bar
x轴应为位置(1,3,20,80,100),y轴应为频率百分比。任何帮助表示赞赏。
答案 0 :(得分:1)
尝试:
final.Frequency.unstack().plot.bar(stacked=True)
或者
final.Frequency.unstack(0).plot.bar(stacked=True)