仅语法问题
我已读入一个按日期对齐的大数据框。我有80多个数据框列表,重点关注感兴趣的关键日期(时间窗口)。我想遍历该列表,并绘制每个项目(时间窗口),其中x轴为时间,Y轴为每个数据帧中特定的数据列。所有数据框都具有相同的格式和相同的列标题。然后,我希望我的for循环根据列表变量名称保存每个图。
但是我不确定如何将这些参数以正确的语法传递给for循环。
对于下面的问题,我假设温度是所有数据帧的共同常数,并且是所有DF返回的Y轴。
我可以找到最近的相关示例(第21-24行):
https://geo-python.github.io/2017/lessons/L7/pandas-plotting.html
In [21]: winter = daily['2012-12-01': '2013-02-28']
In [22]: spring = daily['2013-03-01': '2013-05-31']
In [23]: summer = daily['2013-06-01': '2013-08-31']
In [24]: fall = daily['2013-09-01': '2013-11-30']
List = [winter, spring, summer, fall]
for item in List:
item.plot(item.index, 'Temperature')
plt.savefig(item)
针对我的特殊情况进行了修订:
List = [newdf,newdf1]
for item in List:
item.plot(item.index, 'Delta Port/STBD')
plt.savefig(item)
Traceback (most recent call last):
File "<ipython-input-5-33c93322b048>", line 2, in <module>
item.plot(item.index, 'Delta Port/STBD')
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\plotting\_core.py", line 2941, in __call__
sort_columns=sort_columns, **kwds)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\plotting\_core.py", line 1977, in plot_frame
**kwds)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\plotting\_core.py", line 1766, in _plot
elif not isinstance(data[x], ABCSeries):
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2682, in __getitem__
return self._getitem_array(key)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2726, in _getitem_array
indexer = self.loc._convert_to_indexer(key, axis=1)
File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py", line 1327, in _convert_to_indexer
.format(mask=objarr[mask]))
KeyError: "Int64Index([7230, 7231, 7232, 7233, 7234, 7235, 7236, 7237, 7238, 7239, 7240,\n 7241, 7242, 7243, 7244, 7245, 7246, 7247, 7248, 7249, 7250, 7251,\n 7252, 7253, 7254, 7255, 7256, 7257],\n dtype='int64') not in index"
答案 0 :(得分:0)
您正尝试在item
上致电pandas.DataFrame.plot。您将item.index
作为参数传递,该参数被解释为要绘制的列名列表。由于索引号实际上不是item
的列,因此您会收到发布的KeyError。
尝试以下操作:
file_num = 1
for item in list:
item.plot(title='Delta Port/STBD')
plt.savefig(f'Delta_Port_STBD_{file_num}.png')
file_num += 1
每个文件将保存在脚本的工作目录中。在文件名之前指定完整路径以进行更改。您无需指定format
,因为它是从以.png
结尾的文件名推导出来的。
请参阅我发布的链接,以获取plot()
的参数,以更改Delta Port/STBD
的显示方式。