在熊猫中使用线性插值比较不同采样时间的时间序列



背景: 我有一个月的实验数据。数据值是定期获取的,但不是平均分为一整天。因此,测量从第一天的午夜开始,但在第一天的00:03开始,第二天的00:07开始,依此类推。因此,每天获取的数据读数是移动的。此外,读数之间的频率略有不同。前三天的实验条件在最后三天重复,以比较中间日的效果。

目标: 我想将重复的日子相互比较,在它们之间取不同。

问题: 应该比较第1天和第25天,但相对的每日时间不对应,所以我想将第一天的线性插值与第25天的数据点进行比较。 即对于第 25 天的每个时间增量(相对于一天的开始),我想从第一天减去相同的点。如果第一天没有对应的点,我想使用最近点之间的线性插值。

到目前为止: 我有按行索引的熊猫数据帧,带有时间和列,两者都是浮点数。我在时间列上使用pandas.to_timedelta()创建了一个新的列增量。我尝试减去第 1 天和第 25 天,但由于索引不一致,我最终得到许多 NaN 值。我也尝试将delta作为索引,但仍然无法弄清楚如何正确计算。

我通过以下方式解决了这个问题

  1. 将两个数据帧的索引设置为因变量data.set_index( day_time )

  2. 创建两个数据帧索引的联合combined_index = df1.index.union( df2.index )

  3. 使用组合索引df = df.reindex( combined_index )重新索引两个数据帧

  4. 插入数据帧df = df.interpolate( how = 'linear' )

这在两个数据帧中创建了一组相互索引,允许使用算术运算符轻松进行比较。

最新更新