如何根据 pandas 中值的频率绘制堆积条形图?
How to plot a stacked bar based on frequency of values in a pandas?
我有一个包含两列 '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
我按'position'分组,然后计算每个位置'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轴应该是频率百分比。感谢任何帮助。
尝试:
final.Frequency.unstack().plot.bar(stacked=True)
或者
final.Frequency.unstack(0).plot.bar(stacked=True)
我有一个包含两列 '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
我按'position'分组,然后计算每个位置'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轴应该是频率百分比。感谢任何帮助。
尝试:
final.Frequency.unstack().plot.bar(stacked=True)
或者
final.Frequency.unstack(0).plot.bar(stacked=True)