如何按列字符串分组并绘制每个子集,然后将每个图保存为 PNG? [python]

How to groupby a column string and plot each subset and then save each plot as a PNG? [python]

我有一个数据框,其中某个列有多个字符串类别,然后是时间戳和值列。我想按每个字符串类别对这个数据框进行分组,对于每个类别子集,我想根据时间戳绘制值。我正在使用 python.

这是我使用的代码:

for ID, group in df.set_index('timestamp').groupby('ID'):
    group.plot(kind='line', y='Values', ylabel = 'Value')

所以这段代码进入我的数据框,按每个“ID”字符串分组,并为每个“ID”对应的每个子集创建一个单独的图。伟大的。我想将所有生成的图发送到一个 PNG 文件,我发现要做到这一点我需要使用 .savefig()。但是,当我尝试 运行:

for ID, group in df.set_index('timestamp').groupby('ID'):
    group.plot(kind='line', y='Values', ylabel = 'Value')
    plt.savefig('Path/to/my/folder/test!.png')

for ID, group in df.set_index('timestamp').groupby('ID'):
    group.plot(kind='line', y='Values', ylabel = 'Value')
plt.savefig('Path/to/my/folder/test.png')

只生成了一个 'test.png' 文件,它是针对分组 for 循环中的最后一个图。

直觉上我想留在分组循环中(抱歉,但我不确定还有什么可以称呼它)我应该尝试 运行ning:

for ID, group in df.set_index('timestamp').groupby('ID'):
    group.plot(kind='line', y='Values', ylabel = 'Value').savefig('Path/to/my/folder/test.png')

但只是将“.savefig()”附加到“group.plot()”行的末尾不起作用,只是返回:

AttributeError: 'AxesSubplot' object has no attribute 'savefig'

如何扩充我的代码,以便循环遍历数据框“ID”列中的每个字符串类别,为每个子集生成一个图,然后将其保存为 .PNG 文件?

用不同的名称保存每个文件。您目前在每次迭代时都在覆盖“test.png”:

for ID, group in df.set_index('timestamp').groupby('ID'):
    group.plot(kind='line', y='Values', ylabel = 'Value')
    plt.savefig(f'Path/to/my/folder/test_{ID}.png')