大熊猫数据帧时间序列的滚动均值

时间:2017-03-13 15:33:15

标签: python-2.7 pandas

我正在使用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最好的办法是什么?我尝试了滚动平均法为滚动窗口设置频率。但后来我必须自己重新构建数据框,并使用新的时间戳,我认为这样做更简洁,更简单。

谢谢,如果我能更好地澄清事情,请告诉我。

1 个答案:

答案 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,虽然它意味着计算的平均值比你实际需要的多很多。