我有一些来自传感器的记录数据在夜间完成。我想将结果绘制为带有pyplot的图形。源文件是时间戳,值的csv。对于解析日期,我使用:
pd.read_csv(..., date_parser=pd.datetime.strtime(x, 'H%:%M:%S:%f'),...)
数据的时间戳为23:30:00:000至02:30:00:000(仅限时间)。当绘制我的数据帧pyplot时,假设我想在23:59:59之后绘制的数据应该在同一天早些时候绘制。这是因为所有时间戳的日期(日期)都是相同的,即使日期变得艰难。
...
1900-01-01 23:20:27.832 95.0
1900-01-01 23:20:28.165 95.0
... ...
1900-01-01 02:01:14.247 95.0
1900-01-01 02:01:14.580 95.0
...
因此,问题是,我可以如何忽略日期并按顺序绘制小时/时间。 或者,如何从cvs中读取数据,这些数据会在需要时将时间戳添加一天。
答案 0 :(得分:1)
您必须将日期(或相对日期)添加到午夜后出现的时间戳,然后matplotlib将能够正确地订购时间戳。
由于您的每日数据记录在23:30
并在第二天23:30
之前停止,因此您可以使用此更新日期
假设时间列名为tstamp
ts = pd.Timestamp('1900-01-01 23:30:00')
df.loc[df.tstamp < ts, 'tstamp'] = df.tstamp[df.tstamp < ts] + pd.Timedelta(days=1)
但请注意,如果录制时间超过24小时,此方法将失败。
答案 1 :(得分:0)
假设你的pdf被命名为df,我只会在日期中递归以确保它们中的每个都高于前一个:
datestoprocess=df["date"].values
for i in range(1,len(datestoprocess)):
datestoprocess[i]-= (datestoprocess[i-1]-datestoprocess[i]).days
df["date"]=datestoprocess
如果之前通过解析设置了日期,则将每个日期设置为前一个日期。