我有一个如下所示的 Pandas 数据框:
ID Management Administrative
1 1 2
3 2 1
4 3 3
10 1 3
基本上 1-3 是低中或高的等级。我想要一个堆叠条形图,在 x 轴上具有管理和行政功能,并且每列的 1、2、3 的堆叠组成以百分比表示。
例如如果上面只有 4 个条目,则 1 将占管理栏高度的 50%,2 将占管理栏高度的 25%,3 将占管理栏高度的 25%。 y 轴将上升到 100%。
希望这是有道理的。很难解释,但如果不清楚愿意进一步澄清!
最佳答案
你需要链接几个操作:首先melt
你的数据集将Department
作为一个新变量移动,之后你可以groupby
Department
和 Rating
count
落入该桶中的 ID 数量,然后再次 groupby
Department
来计算百分比。最后,您可以绘制
堆积条形图:
df4.melt().rename(columns={'variable':'Dept', 'value':'Rating'}
).query('Dept!="ID"'
).groupby(['Dept','Rating']).size(
).rename('Count'
).groupby(level=0).apply(lambda x: x/sum(x)
).unstack().plot(kind='bar', stacked=True)
关于python - 在列值上绘制堆积条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53416772/