Python使用线性插值对不规则时间序列进行正则化

Python使用线性插值对不规则时间序列进行正则化,第1张

Python使用线性插值对不规则时间序列进行正则

这需要一些工作,但是请尝试一下。基本思想是找到与每个重采样点最近的两个时间戳并进行插值。

np.searchsorted
用于查找最接近重采样点的日期。

# empty frame with desired indexrs = pd.Dataframe(index=df.resample('15min').iloc[1:].index)# array of indexes corresponding with closest timestamp after resampleidx_after = np.searchsorted(df.index.values, rs.index.values)# values and timestamp before/after resamplers['after'] = df.loc[df.index[idx_after], 'Values'].valuesrs['before'] = df.loc[df.index[idx_after - 1], 'Values'].valuesrs['after_time'] = df.index[idx_after]rs['before_time'] = df.index[idx_after - 1]#calculate new weighted valuers['span'] = (rs['after_time'] - rs['before_time'])rs['after_weight'] = (rs['after_time'] - rs.index) / rs['span']# I got errors here unless I turn the index to a seriesrs['before_weight'] = (pd.Series(data=rs.index, index=rs.index) - rs['before_time']) / rs['span']rs['Values'] = rs.eval('before * before_weight + after * after_weight')

毕竟,希望正确的答案是:

In [161]: rs['Values']Out[161]: 1992-08-27 08:00:00    28.0114291992-08-27 08:15:00    28.3139391992-08-27 08:30:00    28.2230301992-08-27 08:45:00    28.9520001992-08-27 09:00:00    29.908571Freq: 15T, Name: Values, dtype: float64


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5644637.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存