如何处理 python (Pandas) 中间隔不均匀的时间序列

问题描述 投票:0回答:0

大家下午好,

我想用python分析时间序列数据,但我不能确定数据是在哪个区间到来的。我猜它每五秒出现一次,但有时可能更快,有时更慢(也许算法在一个小时内没有记录任何数据)。有没有一种通用的方法来处理这些数据?

例如,我可以在下面的块中做这样的事情吗?如果数据有时低于 5 秒或高于 5 秒,它会正常工作吗?

import pandas as pd
import numpy as np

x = [0,1,1.1,1.100001,2,2.5,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]

length = len(x)
y = [None] * length
pos = 0
while pos < length:
    y[pos] = x[pos]*x[pos]*x[pos]+4*x[pos]*x[pos]+2*x[pos]+1
    pos = pos + 1

print(x)
print(y)

timeline = pd.to_datetime(x,unit="s")
recv = pd.Series(y,timeline)
recv = recv.resample('5S').interpolate(method='spline', order=2) 
print(recv)

这种情况下的输出是:

[0, 1, 1.1, 1.100001, 2, 2.5, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
[1, 8, 9.371000000000002, 9.3710144300073, 29, 46.625, 70, 137, 236, 373, 554, 785, 1072, 1421, 1838, 2329, 2900, 3557, 4306, 5153, 6104, 7165, 8342, 9641, 11068]
1970-01-01 00:00:00       1.0
1970-01-01 00:00:05     236.0
1970-01-01 00:00:10    1421.0
1970-01-01 00:00:15    4306.0
1970-01-01 00:00:20    9641.0
Freq: 5S, dtype: float64

有人可以给我任何关于如何处理此类数据的提示吗? 如果我将它分组为 5 秒块,假设

x = [0,1,2,3,4,5,6,7,8]
并且我使用相同的源代码,那么我会收到一条错误消息。我怎样才能防止出现该错误消息?

感谢您的帮助!

据我所知,我需要至少 2* 采样大小(在我的例子中是 2*5=10 秒)。但我不知道如何防止错误,也不知道我同时进行上采样和下采样的方法是否正确。

python pandas time series resampling
© www.soinside.com 2019 - 2024. All rights reserved.