You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python补全时间序列缺失的日期与数据

时间序列缺失值补全与插值的高效实现方案

对于小时级时间序列的缺失补全与插值,用Pandas是最标准高效的方案,无需手动遍历处理,步骤如下:

1. 数据加载与日期格式转换

先将原始数据加载为DataFrame,并把日期字符串快速转换为datetime类型,同时设为索引(这是时间序列处理的关键):

import pandas as pd

# 示例数据(也可通过pd.read_csv读取文件)
data = [
    ["03/31 19:00", 68.0],
    ["03/31 20:00", 68.0],
    ["03/31 22:00", 70.0],
    ["03/31 23:00", 68.0],
    ["04/01 00:00", 69.0],
    ["04/01 02:00", 70.0]
]

df = pd.DataFrame(data, columns=["datetime", "value"])
# 批量转换为datetime类型,比手动循环strptime高效
df["datetime"] = pd.to_datetime(df["datetime"], format="%m/%d %H:%M")
# 设置datetime为索引,方便后续时间序列操作
df = df.set_index("datetime")

2. 补全缺失时间点

利用resample方法按小时生成完整的时间序列,缺失的时间点会自动填充NaN:

# 'H'表示按小时频率重采样,asfreq()生成连续时间轴
df_full = df.resample('H').asfreq()

此时df_full会包含所有连续的小时时间点,缺失的21:00、01:00对应的value列会被填充为NaN。

3. 缺失值插值

根据数据特性选择合适的插值方法,常用的两种:

  • 时间加权插值:method='time',考虑时间间隔权重,更贴合时间序列的变化规律,优先推荐
  • 线性插值:默认方法,适合数值平稳变化的场景

代码示例:

# 时间加权插值
df_interpolated = df_full.interpolate(method='time')

# 若用线性插值可替换为:
# df_interpolated = df_full.interpolate(method='linear')

最终效果

处理后的df_interpolated会包含完整的小时时间序列,缺失的数值已被合理填充:

  • 03/31 21:00的value会根据前后的68.0和70.0插值为69.0
  • 04/01 01:00的value会根据前后的69.0和70.0插值为69.5

这种方案完全自动化,无需手动查找时间间隙,处理效率远高于手动遍历,是时间序列补全插值的工业标准实现。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 23:55:09