python - 迭代 Groupby.unstack() 项以制作单独的图

标签 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 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))

我不确定我是否以正确的方式处理这个问题,但整个想法是在每次迭代时重置绘图,绘制下一列的线图,然后将其保存为新文件名。

最佳答案

df.iteritems() 迭代器返回 (column name, series) 对([参见文档])1 。所以你可以简化:

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 应该已经是“年份”,因为这似乎是索引名称。默认情况下,LegendTrue。请参阅additional plot parameters .

关于python - 迭代 Groupby.unstack() 项以制作单独的图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34253547/

相关文章:

python - copy.copy 和 dataclasses.replace 之间的区别

python - Dataframe 按值分组,删除重复项,但保存不相似的条目? Python

javascript - 如何在一个对象中调用每个对象的方法

java - 为什么 Java GUI 中的大循环滞后/卡住?

python - Pandas "columns of child subrecords (as lists of dicts)"到更传统的 "SQL Join"输出样式

python - 为什么在 numpy.genfromtxt() 中使用间接定义的转换器会失败并出现错误 "RecursionError: maximum recursion depth exceeded"?

python - 基于列数据生成列描述的优雅方式

java - 编写 for 循环/while 循环?

python - Pandas :拆分索引字符串并汇总相等切片的行

python - 绘制 Pandas Dataframe 的直方图及其均值和标准差,得到 ValueError