【发布时间】:2021-03-11 02:14:39
【问题描述】:
我有一个包含多个及时记录的数据框,特别是每 4 分钟一次。我想绘制时间序列以获得该温度的每日多个值。然而,数据以单一方式而不是每天绘制每个值,如我所愿。
df = pd.read_csv("my_file.csv")
print (df.head())
输出
Temperature
Date/Time
2015-07-01 00:00:47 25.21
2015-07-01 00:01:48 25.23
2015-07-01 00:02:48 25.33
2015-07-01 00:03:47 25.22
2015-07-01 00:04:48 25.32
当我使用 seaborn 进行绘图时,我得到了这个:
df = df.reset_index()
sns.relplot(x= "Date/Time", y="Temperature", data=df, kind="line")
plt.show()
这不是我想要绘制的;我想要这样的例子:
我认为我必须重新采样数据,但我得到了当天的平均值。因此,一天只有一个值,而不是多个值。
df = df.resample("H").mean()
print (df.head())
输出:
Temperature
Date/Time
2015-07-01 00:00:00 25.264167
2015-07-01 01:00:00 25.267167
2015-07-01 02:00:00 25.272000
2015-07-01 03:00:00 25.290167
2015-07-01 04:00:00 25.307333
【问题讨论】:
-
你可以在这里找到不同的时间序列频率字符串别名(pandas.pydata.org/pandas-docs/stable/user_guide/…),你也可以使用
df.resample("2H").mean()每两小时重新采样一次等 -
感谢您的回答。那是行不通的。我什至写了一个这样做的例子。该方法只是将数据重新采样为两个小时的平均值。要绘制这样的数字,您需要在同一天有多个值。这意味着您不必将所有内容平均为一个值,在这种情况下,每 2 小时一个值。
-
如果您想重新采样一天,请使用
df.resample("D").mean() -
感谢您的回答。这正是我在帖子中所写的。可能你没有理解这个问题。这个想法是将所有信息收集到具有多个值的一天中,而不是一个值。因此,这个命题正是我所做的并且是不正确的。它更复杂。感谢您的帮助。
标签: python pandas matplotlib time-series seaborn