如何去除Python(或Pandas)中时间序列数据的瞬变?
How to remove transients in time-series data in Python (or Pandas)?
我有一组记录热泵流量和温度的时间序列数据。系统启动的前几分钟,流量和温度还没有完全发展,我想将它们过滤掉。
Time (min) Flow Supply T Return T
….
45 0 0 0
46 0 0 0
47 1.338375 92.711328 78.72152
48 2.267975 82.578552 74.239624
49 0.778125 96.073136 74.288664
50 0.778125 101.3998 74.686288
51 0.7885 102.1189 74.490528
….
比如运行前3分钟(47-49分钟),不要对数据做任何计算。
我可以用循环来做到这一点,但数据集非常大(>200 mb 文本文件)并且需要很长时间才能循环。我想知道是否有更有效的方法将其拉出,也许使用 Pandas?
如有任何帮助或建议,我们将不胜感激!提前致谢!!
请尝试以下操作,我认为它应该有效,基本上它会过滤掉 n-3
处的行不等于 0 且不是 NaN
的行,这假设没有流量你的值为 0:
In [12]:
df[(df.Flow.shift(3)!=0) & (df.Flow.shift(3).notnull())]
Out[12]:
Time_(min) Flow Supply_T Return_T
5 50 0.778125 101.3998 74.686288
6 51 0.788500 102.1189 74.490528
我有一组记录热泵流量和温度的时间序列数据。系统启动的前几分钟,流量和温度还没有完全发展,我想将它们过滤掉。
Time (min) Flow Supply T Return T
….
45 0 0 0
46 0 0 0
47 1.338375 92.711328 78.72152
48 2.267975 82.578552 74.239624
49 0.778125 96.073136 74.288664
50 0.778125 101.3998 74.686288
51 0.7885 102.1189 74.490528
….
比如运行前3分钟(47-49分钟),不要对数据做任何计算。 我可以用循环来做到这一点,但数据集非常大(>200 mb 文本文件)并且需要很长时间才能循环。我想知道是否有更有效的方法将其拉出,也许使用 Pandas?
如有任何帮助或建议,我们将不胜感激!提前致谢!!
请尝试以下操作,我认为它应该有效,基本上它会过滤掉 n-3
处的行不等于 0 且不是 NaN
的行,这假设没有流量你的值为 0:
In [12]:
df[(df.Flow.shift(3)!=0) & (df.Flow.shift(3).notnull())]
Out[12]:
Time_(min) Flow Supply_T Return_T
5 50 0.778125 101.3998 74.686288
6 51 0.788500 102.1189 74.490528