首页 > 解决方案 > 使用组(和总和)创建堆积条形图

问题描述

这是独一无二的,因为我希望堆积条形图反映实际数值,而不是示例中的计数或大小

我有一个数据框

## create Data frame
DF = pd.DataFrame({ 'name': 
['AA6','B7Y','CCY','AA6','B7Y','CCY','AA6','B7Y','CCY','AA6'],
                    'measure': [3.2,4.2,6.8,5.6,3.1,4.8,8.8,3.0,1.9,2.1]})

我想按名称分组

#Create a groupby object
gb=DF.groupby(['name', 'measure'])
gb.aggregate('sum')

在此处输入图像描述

然后绘制名称(AA6、B7Y 和 CCY)中三个类别的条形图,其中每个相应的“度量”值堆叠,并按它们的顺序排列(不是按它们出现在上面的升序)

我试过这个:

DF.groupby('name').plot(kind='bar', stacked=True)

但它只是创建单独的图。

标签: pandasgroup-bybar-chart

解决方案


如果我明白你在问什么:

df = pd.DataFrame({ 'name': ['AA6','B7Y','CCY','AA6','B7Y','CCY','AA6','B7Y','CCY','AA6'],
                    'measure': [3.2,4.2,6.8,5.6,3.1,4.8,8.8,3.0,1.9,2.1]})

df.groupby(["name", "measure"])["measure"].sum().unstack().plot(kind="bar", stacked=True)

数据框值的堆积条形图

我们sum用来保持measure条形图中的大小。
如果您不需要图例,请添加legend=Falseplot(...).

在此处输入图像描述


推荐阅读