首页 > 解决方案 > 在单个列中按多年分组并绘制堆叠的结果

问题描述

我有一个看起来像这样的数据框,默认的 pandas 索引从 0 开始:

index     Year    Count    Name
0         2005    70000    Apple
1         2005    60000    Banana
2         2006    20000    Pineapple
3         2007    70000    Cherry
4         2007    60000    Coconut
5         2007    40000    Pear
6         2008    90000    Grape
7         2008    10000    Apricot

我想创建这个数据的堆积条形图。但是,使用 df.groupby() 函数将只允许我在此数据上调用诸如 .mean() 或 .count() 之类的函数,以便按年份绘制数据。我得到以下结果,它将每个数据点分开并且不按共享年份对它们进行分组。

在此处输入图像描述 我已经看到了堆积条形图的 matplotlib 示例,但是它们按公共索引分组,在这种情况下,我没有要绘制的公共索引。有没有办法在不重新排列整个数据框的情况下对这些数据进行分组和绘制?

标签: pythonpandasdataframematplotlib

解决方案


如果我理解正确,您可以pivot先使用:

df1 = pd.pivot_table(df, values='Count', index='Year', columns='Name')
df1.plot(kind='bar')

输出:

在此处输入图像描述 或与论点stacked=True

df1.plot(kind='bar', stacked=True)

在此处输入图像描述


推荐阅读