为分组数据框绘制图

Draw plot for a grouped data frame

我有一个问题,我需要为包含 factory_name 和 YYYY 格式的日期的数据绘制图表。我需要有一个图,其中包含每个 factory_name 的值、sold/bought 的部分总和以及每年每个部分的平均值。

我试过这样做:

pd.pivot_table(df.reset_index(),
                index='Year', columns='factory_name', values='Demand').plot()

这没关系,但是我没有每个 factory_name 需求的平均值,我只能在数据框中得到,我不知道如何将这个结果添加到我的图中。

df.groupby(['factory_name','Year']).agg(['sum','mean'])

这是创建数据框的代码:

df = pd.DataFrame({'factory_name' : ['A','B','A','B','A','B','B','A','B','A','A','A'],
                   'Year': [2001,2002,2003,2001,2002,2003,2002,2003,2003,2003,2003,2003],
                  'Demand': [100,200,-20,40,30,50,100,200,50,-100,40,50]})

感谢帮助!

colors = ["brown", "darkgreen"]

plt.figure(figsize=(12,8))

for factory, color in zip(df.factory_name.unique(), colors):
    s = df.loc[df.factory_name==factory].groupby("Year").Demand.mean()
    plt.plot(
        s.index,
        s.values,
        color=color,
        linewidth=2,
        alpha=.5,
        label="%s mean"%factory
    )
for factory, color in zip(df.factory_name.unique(), colors):
    s = df.loc[df.factory_name==factory].groupby("Year").Demand.sum()
    plt.plot(
        s.index,
        s.values,
        color=color,
        linewidth=4,
        alpha=.25,
        label="%s sum"%factory
    )
    
plt.ylim(0,500)
plt.xticks(df.Year.unique())

plt.xlabel("year")
plt.legend()
plt.show()

编辑: 我编辑了代码以扩大图形大小并添加图例。

输出: