使用 Python Pandas 数据框滑动窗口时间序列数据

数据挖掘 Python 时间序列 熊猫 数据框
2022-02-10 09:39:13

我的数据看起来像:

 1495573445.162, 0, 0.021973, 0.012283, -0.995468, 1
 1495573445.172, 0, 0.021072, 0.013779, -0.994308, 1
 1495573445.182, 0, 0.020157, 0.015717, -0.995575, 1
 1495573445.192, 0, 0.017883, 0.012756, -0.993927, 1
 1495573445.202, 0, 0.021194, 0.012161, -0.994705, 1
 1495573445.212, 0, 0.019638, 0.013718, -0.994019, 1
 1495573445.222, 0, 0.019440, 0.010803, -0.994476, 1
 1495573445.232, 0, 0.018112, 0.010849, -0.993073, 1
 1495573445.242, 0, 0.020157, 0.011154, -0.994644, 1
 1495573445.252, 0, 0.020340, 0.010040, -0.995804, 1
 1495573445.262, 0, 0.017792, 0.009857, -0.996078, 1
 1495573445.272, 0, 0.020538, 0.010239, -0.994858, 1

这是加速度计数据,其中数据框列标记为"Time stamp""Time skipped""x""y""z",并且"label"索引设置为"Time stamp"

采样率约为 100Hz。在这种情况下我应该如何创建一个滑动窗口?

我想出了这个:

def sliding_window(data, window_size, step_size):
    data = pd.rolling_window(data, window_size)
    data = data[step_size - 1 :: step_size]
    print data
    return data

我怀疑这是正确的答案,鉴于我有 100Hz 的采样率,我不知道要设置什么 window_size 和 step_size 。

1个回答

您可以使用内置的 Pandas 函数来执行此操作:

df["Time stamp"] = pd.to_datetime(df["Time stamp"]) # Convert column type to be datetime
indexed_df = df.set_index(["Time stamp"])           # Create a datetime index
indexed_df.rolling(100)                             # Create rolling windows
indexed_df.rolling(100).mean()                      # Then apply functions to rolling windows

此代码不是 100% 正确的,因为日期时间转换不正确,但它应该可以帮助您入门。