python - 在列值上绘制堆积条形图

标签 python pandas bar-chart

我有一个如下所示的 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 DepartmentRating 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)

enter image description here

关于python - 在列值上绘制堆积条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53416772/

相关文章:

python - 将 datetime64[ns] 列转换为 pandas 中的 DatetimeIndex

python - 对来自两个数据帧的分组数据使用 isin() 函数

android - 如何在 BubbleChart 中显示 x 轴标签?

android - 将 BarChartActivity 更改为 StackedBarActivity

python - Pandas:绘制正在运行的项目

python - Python v2 函数中的表存储绑定(bind)

c++ - QTreeWidget : Windows Explorer-like editing

python - 使用排列在 Python 中广播

javascript - 如何在 iframe 中的光标位置获取元素?

python - 数据透视表不写入预先存在的工作表