如何为LSTM训练用时间序列Pandas DataFrame填充两值间缺失值
时间序列缺失值填充方案(适配LSTM训练)
针对你需要填充实验时间序列中浓度缺失值的需求,**线性插值(或时间权重插值)**是最贴合实验逻辑且适合LSTM训练的方案——它能让浓度值在两个已知测量点之间平滑过渡,自然落在0-10的范围内,不会破坏序列的连续性。
先修正数据问题
你的示例数据最后一行的Timestamp应该是11:15(对应1小时后的测量点),否则时间顺序混乱,无法正确插值。
具体实现步骤(Python Pandas)
- 数据预处理:将时间列转为时间类型,确保序列有序
- 插值填充:用线性/时间权重方法填充NaN值
代码示例
import pandas as pd import numpy as np # 构造修正后的示例数据集 data = { 'Timestamp': ['10:15', '10:20', '10:30', '10:40', '10:50', '11:00', '11:15'], 'concentration': [0, np.nan, np.nan, np.nan, np.nan, np.nan, 10] } df = pd.DataFrame(data) # 转换时间格式并确保序列有序 df['Timestamp'] = pd.to_datetime(df['Timestamp'], format='%H:%M') df = df.sort_values('Timestamp').reset_index(drop=True) # 方式1:线性插值(适合时间间隔均匀的情况) df['concentration'] = df['concentration'].interpolate(method='linear') # 方式2:时间权重插值(适合时间间隔不均匀的场景,精度更高) # df['concentration'] = df['concentration'].interpolate(method='time') # 查看填充结果 print(df)
结果说明
- 线性插值会根据两个已知点的浓度差和时间间隔,均匀分配中间每个时间步的浓度值,所有填充值都会落在0-10之间
- 时间权重插值会根据每个缺失点与已知点的时间距离计算权重,更适合时间间隔不固定的数据集
- 这种填充方式保留了时间序列的趋势连续性,完全适配LSTM模型对序列特征的学习需求
内容的提问来源于stack exchange,提问作者fragger
相关产品推荐
相关产品推荐

