在 Python 3 中从 CSV 文件绘制时间序列时遇到问题

问题描述 投票:0回答:1

所以,我正在尝试从 CSV 文件中绘制 2 列数据(在本例中为温度和电压)。但是出于某种奇怪的原因,无论我尝试什么,我都会收到有关 TimeStamp 列的错误。

错误是: 上述异常是以下异常的直接原因:

回溯(最后一次通话): 文件“Date_Time_Experiment.py”,第 10 行,位于 data['TimeStamp'] = pd.to_datetime(data['TimeStamp'], format='%d/%m/%Y-%H:%M:%S') getitem 中的文件“/home/pi/.local/lib/python3.7/site-packages/pandas/core/frame.py”,第 3458 行 索引器 = self.columns.get_loc(key) 文件“/home/pi/.local/lib/python3.7/site-packages/pandas/core/indexes/base.py”,第 3363 行,在 get_loc 从 err 引发 KeyError(key) KeyError:'时间戳'

下面的代码是我试过的最新版本

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from datetime import datetime


plt.style.use('fivethirtyeight')

def animate(i):
    data = pd.read_csv('Logging.csv', skiprows=1)
    data['TimeStamp'] = pd.to_datetime(data['TimeStamp'], format='%d/%m/%Y-%H:%M:%S')
    
    x=data['TimeStamp'] 
    y1=data['Temperature']
    y2=['Voltage']
    plt.cla()
    plt.plot(x,y1,label='Temperature')
    plt.plot(x,y2,label='Voltage')
    
    plt.legend(loc='upper left')
    plt.tight_layout()
    
ani=FuncAnimation(plt.gcf(),animate, interval=61000)

plt.tight_layout()
plt.show()


我的 CSV 文件如下所示:

时间戳 温度 电压
07/03/2023-15:33:45 20.595 10.04591440
07/03/2023-16:15:32 20.630 10.04591070

我在 StackOverflow 上搜索了信息和其他网站,但我尝试的任何东西似乎都不起作用。 谁能帮我解决这个问题?

谢谢

pandas csv time series
1个回答
0
投票

我通过删除

skiprows=1
解决了这个问题。您的数据现在出现在数据框中。

第二个问题是打字错误:当您将电压值分配给

data
时,您离开了
y2
。 (将您发布的代码与我的进行比较。)

您的

animate
电话还有最后一个问题。我不知道那是什么。当我发表评论时,我得到了温度和电压与时间的关系图。

我在这里找到了

FuncAnimation
的教程。我需要做更多的工作才能让它在我的 Macbook Pro 上运行。也许它会帮助你。

# see https://stackoverflow.com/questions/75673364/having-issues-with-plotting-time-series-from-a-csv-file-in-python-3

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from datetime import datetime

plt.style.use('fivethirtyeight')

def animate():
    data = pd.read_csv('../resources/Logging.csv', header=0)
    data['TimeStamp'] = pd.to_datetime(data['TimeStamp'], format='%d/%m/%Y-%H:%M:%S')

    x = data['TimeStamp']
    y1 = data['Temperature']
    y2 = data['Voltage']

    plt.cla()
    plt.plot(x, y1, label='Temperature')
    plt.plot(x, y2, label='Voltage')

    plt.legend(loc='upper left')
    plt.tight_layout()

#    ani = FuncAnimation(plt.gcf(), animate, interval=61000)

    plt.tight_layout()
    plt.show()

if __name__ == '__main__':
    animate()
© www.soinside.com 2019 - 2024. All rights reserved.