如何根据 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)