首页 > 解决方案 > 几何 XY 数据的 Pandas 线性插值似乎忽略了点

问题描述

我正在尝试在 pandas 中对我的数据帧进行上采样(从 50 Hz 到 2500 Hz)。我必须上采样以匹配以这个更高频率采样的传感器。我有来自铣床的 x、y、z 点。当我绘制原始数据时,线条看起来很直,正如我所期望的那样。

原始数据 原始数据放大

我正在像这样插入数据框:

df.drop_duplicates(subset='time', inplace=True)
df.set_index('time', inplace=True)
df.index = pd.DatetimeIndex(df.index)
upsampled = new_df.resample('0.4ms').interpolate(method='linear')
plt.scatter(upsampled['X[mm]'], upsampled['Y[mm]'], s=0.5)
plt.plot()

我也试过

upsampled = df.resample('0.4L').interpolate(method='linear')

我希望新点总是介于原始点之间。由于我要从 50 Hz 到 2500 Hz,我预计原始数据中的每对点之间均匀分布有 50 个点。但是,似乎忽略了一些原始点,如下图所示(第二张图在一个特别麻烦的地方放大了)。

上采样数据叠加 上采样数据叠加和缩放

此图显示了橙色的原始点和蓝色的上采样插值点(两者都是分散的,尽管上采样的点非常密集,它看起来像一个图)。代码如下所示。

upsampled = df.resample('0.4ms').interpolate(method='linear')
plt.scatter(upsampled['X[mm]'], upsampled['Y[mm]'], s=0.5, c='blue') 
plt.scatter(df['X[mm]'], df['Y[mm]'], s=0.5, c='orange')
plt.gca().set_aspect('equal', adjustable='box')
fig.show()

有什么想法可以使插值起作用吗?

标签: pythonpandaslinear-interpolationpandas-resample

解决方案


最有可能的问题是原始和重新采样的 DataFrame 中的时间戳没有对齐,因此在重新采样时我们需要指定如何处理。

由于原始频率为 50 Hz,而重新采样的频率为 2500 Hz,因此只需采用即可mean修复它:

upsampled = new_df.resample('0.4ms').mean().interpolate(method='linear')

不幸的是,没有任何样本数据,我无法验证它是否有效。请让我知道它是否有帮助


推荐阅读