在分组图上循环并导出单个图

2024-05-12 18:19:10 发布

您现在位置:Python中文网/ 问答频道 /正文

The documentation对于每个元素是如何工作的,似乎有点稀疏,所以下面是:

我有一堆文件,我想迭代和导出一个绘图,为每一个文件。你知道吗

df_all.head()

退货

    Dem-Dexc    Aem-Dexc    Aem-Aexc    S       E     fit     frame filename
0   18150.0595  18548.2451  15263.7451  0.7063  0.5054  0.879   1.0 Traces_exp22_tif_pair16.txt
1   596.9286    7161.7353   1652.8922   0.8244  0.9231  0.879   2.0 Traces_exp22_tif_pair16.txt
2   93.2976     3112.3725   2632.6667   0.5491  0.9709  0.879   3.0 Traces_exp22_tif_pair16.txt
3   1481.1310   4365.4902   769.3333    0.8837  0.7467  0.879   4.0 Traces_exp22_tif_pair16.txt
4   583.1786    6192.6373   1225.5392   0.8468  0.9139  0.879   5.0 Traces_exp22_tif_pair16.txt

现在我要分组并迭代:

for group in df_all.groupby("filename"):
    plot = sns.regplot(data = group, x = "Dem-Dexc", y = "frame")

但是我得到TypeError: tuple indices must be integers or slices, not str。为什么我会得到这个?你知道吗


Tags: 文件thetxtdfgroupallfilenameframe
1条回答
网友
1楼 · 发布于 2024-05-12 18:19:10

我认为你需要改变:

for group in df_all.groupby("filename")

收件人:

for i, group in df_all.groupby("filename"):
    plot = sns.regplot(data = group, x = "Dem-Dexc", y = "frame")

用于解包tuples。你知道吗

或者通过[1]选择元组的第二个值:

for group in df_all.groupby("filename"):
    plot = sns.regplot(data = group[1], x = "Dem-Dexc", y = "frame")

您可以通过以下方式检查tuple输出:

for group in df_all.groupby("filename"):
    print (group)

('Traces_exp22_tif_pair16.txt',      Dem-Dexc    Aem-Dexc    Aem-Aexc       S       E    fit  frame  \
0  18150.0595  18548.2451  15263.7451  0.7063  0.5054  0.879    1.0   
1    596.9286   7161.7353   1652.8922  0.8244  0.9231  0.879    2.0   
2     93.2976   3112.3725   2632.6667  0.5491  0.9709  0.879    3.0   
3   1481.1310   4365.4902    769.3333  0.8837  0.7467  0.879    4.0   
4    583.1786   6192.6373   1225.5392  0.8468  0.9139  0.879    5.0   

                      filename  
0  Traces_exp22_tif_pair16.txt  
1  Traces_exp22_tif_pair16.txt  
2  Traces_exp22_tif_pair16.txt  
3  Traces_exp22_tif_pair16.txt  
4  Traces_exp22_tif_pair16.txt  )

与:

for i, group in df_all.groupby("filename"):
    print (group)

     Dem-Dexc    Aem-Dexc    Aem-Aexc       S       E    fit  frame  \
0  18150.0595  18548.2451  15263.7451  0.7063  0.5054  0.879    1.0   
1    596.9286   7161.7353   1652.8922  0.8244  0.9231  0.879    2.0   
2     93.2976   3112.3725   2632.6667  0.5491  0.9709  0.879    3.0   
3   1481.1310   4365.4902    769.3333  0.8837  0.7467  0.879    4.0   
4    583.1786   6192.6373   1225.5392  0.8468  0.9139  0.879    5.0   

                      filename  
0  Traces_exp22_tif_pair16.txt  
1  Traces_exp22_tif_pair16.txt  
2  Traces_exp22_tif_pair16.txt  
3  Traces_exp22_tif_pair16.txt  
4  Traces_exp22_tif_pair16.txt  

如果要将输出保存到图片png

for i, group in df_all.groupby("filename"):
    plot = sns.regplot(data = group, x = "Dem-Dexc", y = "frame")
    fig = plot.get_figure()
    fig.savefig("{}.png".format(i.split('.')[0]))

相关问题 更多 >