Python 遍历Groupby.unstack()项以生成单独的绘图

Python 遍历Groupby.unstack()项以生成单独的绘图,python,for-loop,pandas,matplotlib,group-by,Python,For Loop,Pandas,Matplotlib,Group By,我有一个名为afplot的数据帧: apple_fplot = apple_f1.groupby(['Year','Domain Category'])['Value'].sum() afplot = apple_fplot.unstack('Domain Category') 我现在需要为afplot的每一列生成一个绘图,并且需要将每个绘图保存到一个唯一的文件名 我一直试图通过一个for循环来实现这一点(我知道这是低效的),但似乎无法正确实现 for index, column in afp

我有一个名为afplot的数据帧:

apple_fplot = apple_f1.groupby(['Year','Domain Category'])['Value'].sum()
afplot = apple_fplot.unstack('Domain Category')
我现在需要为afplot的每一列生成一个绘图,并且需要将每个绘图保存到一个唯一的文件名

我一直试图通过一个for循环来实现这一点(我知道这是低效的),但似乎无法正确实现

for index, column in afplot.iteritems():
    plt.figure(index); afplot[column].plot(figsize=(12,6))
    plt.xlabel('Year')
    plt.ylabel('Fungicide used / lb')
    plt.title('Amount of fungicides used on apples in the US')
    plt.legend()
    plt.savefig('C:/Users/User/Documents/Work/Year 3/Project/Plots/apple_fplot{}'.format(index))
我不确定我的方法是否正确,但整个想法是在每次迭代时重置绘图,只绘制下一列的线条图,然后将其保存为新文件名

迭代器返回(
列名
系列
)对([参见文档])。因此,您可以简化:

for col, data in afplot.iteritems():
    ax = data.plot(title='Amount of fungicides used on apples in the US'))
    ax.set_ylabel('Fungicide used / lb')
    plt.gcf().savefig('C:/Users/User/Documents/Work/Year 3/Project/Plots/apple_fplot{}'.format(col))
    plt.close()

xlabel
应该已经是“年”,因为这似乎是
索引的
名称<默认情况下,代码>图例
。请参阅。

可能值得注意的是,许多列包含NaN值,但不确定这是否相关。谢谢,这正是我想要的。我一直在努力适应熊猫的使用,所以非常感谢大家的帮助(我现在的处境是,我基本上要在几个月内从头开始学习python)。不客气,很高兴答案对我有所帮助。SO社区肯定会让这一切变得更容易。添加了plt.close(),需要在每次迭代后关闭绘图。是的,我这段时间的最佳想法就是注册,这样我就可以发布我自己的问题,而不是试图通过拼凑其他人问题的答案来解决问题——有时我需要的只是其他人的问题中没有包含。你没有接受答案——有什么遗漏吗?