You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Pandas几何X-Y数据线性插值疑似忽略原始点:50Hz转2500Hz上采样问题求助

解决Pandas上采样铣床坐标数据时原始点被"忽略"的问题

先帮你梳理下可能的问题点和对应的解决思路,我碰到过类似的时序插值对齐问题,应该能帮到你:

1. 先修正代码里的明显笔误

看你第一段代码里写的:

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

但前面处理的都是df(去重、设索引),这里的new_df明显是笔误吧?如果误用了未做预处理的原始数据去重采样,结果肯定会出问题!先把这个修正成df.resample(...)再说。

2. 核心问题:原始时间戳是否落在目标采样的时间点上?

你要从50Hz(20ms间隔)转到2500Hz(0.4ms间隔),理论上20ms是0.4ms的整数倍(50倍),如果原始时间戳严格对齐0.4ms整数倍,resample后的索引会包含所有原始时间点,插值结果也会保留原始值。但如果原始时间戳有微小偏差(比如实际是20.002ms间隔,或者时间戳精度不足),那原始点就不会出现在resample后的目标索引里,视觉上就会看起来像是被"忽略"了。

验证方法:

先打印原始时间戳的间隔,确认是否严格为20ms:

print("原始时间间隔:")
print(df.index.diff())

再检查原始时间点是否存在于采样后的索引中:

upsampled = df.resample('0.4ms').interpolate(method='linear')
# 找出不在采样索引里的原始时间点
missing_original = df.index.difference(upsampled.index)
if len(missing_original) > 0:
    print(f"有{len(missing_original)}个原始时间点不在采样后的索引中:")
    print(missing_original[:5])  # 打印前5个查看偏差情况

解决思路:强制保留原始点的插值方法

如果原始时间戳确实和目标采样点不对齐,不要直接用resample.interpolate,而是先创建包含所有原始时间点+目标采样点的联合索引,再插值,这样既能保证最终输出是2500Hz的采样频率,又能确保插值完全基于原始数据计算:

# 1. 生成严格2500Hz的目标时间序列(0.4ms间隔)
target_index = pd.date_range(
    start=df.index.min(),
    end=df.index.max(),
    freq='0.4ms'
)

# 2. 合并原始索引和目标索引,确保原始点被纳入计算
combined_index = df.index.union(target_index).sort_values()

# 3. 重新索引并插值,最后按目标频率规整输出
upsampled = df.reindex(combined_index).interpolate(method='linear').resample('0.4ms').asfreq()

这样处理后,插值计算会用到所有原始点,最终输出的采样点是严格的0.4ms间隔,即使原始点不在采样点位置,插值线条也会准确经过原始点。

3. 优化插值参数确保完整性

默认的linear插值没问题,但可以加上limit_direction='both'参数,确保首尾数据的插值也能正常计算:

upsampled = df.resample('0.4ms').interpolate(method='linear', limit_direction='both')

4. 可视化验证小技巧

把原始点的尺寸调大,更容易看清原始点和插值点的对应关系:

plt.scatter(upsampled['X[mm]'], upsampled['Y[mm]'], s=0.5, c='blue', label='插值点')
plt.scatter(df['X[mm]'], df['Y[mm]'], s=5, c='orange', label='原始点')
plt.gca().set_aspect('equal', adjustable='box')
plt.legend()
plt.show()

如果插值正确,你会看到每个橙色原始点都刚好在蓝色插值线条的转折点上,不会出现"被忽略"的情况。


内容的提问来源于stack exchange,提问作者Federica Tomola

火山引擎 最新活动