【问题标题】:Grouping by multiple years in a single column and plotting the result stacked在单个列中按多年分组并绘制堆叠的结果
【发布时间】:2019-05-06 13:16:18
【问题描述】:

我有一个看起来像这样的数据框,默认的 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 示例,但是它们按公共索引分组,在这种情况下,我没有要绘制的公共索引。有没有办法在不重新排列整个数据框的情况下对这些数据进行分组和绘制?

【问题讨论】:

  • 先按面积排序再绘图?不会有特殊的分隔,但相同的区域将被分组。

标签: python pandas dataframe matplotlib


【解决方案1】:

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

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

输出:

或者使用参数stacked=True

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

【讨论】:

  • 谢谢,我想像如何旋转数据以在 excel 中工作,但不知道如何使用 Pandas,非常感谢。
猜你喜欢
  • 2019-05-04
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 2016-11-02
  • 2020-04-08
相关资源
最近更新 更多