我正在使用Pandas来处理一些Timeseries数据。我有一个以下格式的数据框:
Date Time Reading
552726 2016/08/01 0: 0: 0 17.28
552727 2016/08/01 0: 0: 5 17.28
552728 2016/08/01 0: 0:10 17.21
552729 2016/08/01 0: 0:15 17.16
552730 2016/08/01 0: 0:20 17.11
552731 2016/08/01 0: 0:25 17.08
552732 2016/08/01 0: 0:30 17.18
552733 2016/08/01 0: 0:35 17.18
etc...
我想平均阅读列,因此需要10分钟的窗口并计算平均值,我想在时间序列中移动此窗口。然后我希望使用新的平均值和时间戳更新数据框,所以它看起来像这样:
Date Time Reading
552726 2016/08/01 0: 0: 0 17.30
552727 2016/08/01 0: 10:0 17.35
552728 2016/08/01 0: 20:0 17.20
etc...
Pandas最好的办法是什么?我尝试了滚动平均法为滚动窗口设置频率。但后来我必须自己重新构建数据框,并使用新的时间戳,我认为这样做更简洁,更简单。
谢谢,如果我能更好地澄清事情,请告诉我。
答案 0 :(得分:1)
根据您的数据,我想要计算15秒间隔的平均值。 我只是做了:
#frame contains your data
n_obs = 3
result = frame.rolling(window = n_obs, min_periods = 1).mean().iloc[::n_obs,:]
# Date Time Reading
# 0 2016/08/01 0: 0: 0 17.280000
# 3 2016/08/01 0: 0:15 17.216667
# 6 2016/08/01 0: 0:30 17.123333
主要"技巧"正在选择n_obs的观察倍数。
这应该适合你使用n_obs = 120,虽然它意味着计算的平均值比你实际需要的多很多。