⏳ 时间序列预测 · 从零到实战

📌 题目3 Pandas 时间序列处理

📆 DatetimeIndex

  • pd.to_datetime() 灵活解析
  • pd.date_range() 生成连续日期
  • 作为索引 → 时间序列基石
  • 属性:.year, .month, .day, .weekday

📂 数据读取

  • read_csv(parse_dates=True)
  • index_col='date' 直接索引
  • 处理缺失时间戳
  • 时区处理 (tz_localize)

🔄 重采样 resample

  • 降采样:.resample('M').mean()
  • 升采样:插值 / 填充
  • 聚合函数:sum, ohlc, asfreq
  • 标签:'D','W','Q','Y'

⏩ 时间偏移 shift

  • .shift(1) 滞后一期
  • .shift(-1) 超前一期
  • 配合差分:ts - ts.shift(1)
  • freq 参数:shift(3, freq='D')

🌀 滚动窗口 rolling

  • .rolling(window=7).mean()
  • 支持 min_periods, center
  • 滚动标准差、相关系数
  • 适用于平滑与特征工程

Pandas 时间序列核心方法

方法说明常用参数示例
pd.date_range()创建日期范围start, end, periods, freqpd.date_range('2024-01-01', periods=5, freq='D')
pd.to_datetime()转换字符串/列表为时间format, errorspd.to_datetime(['2024-01-01', '2024-02-01'])
df.resample()重采样 (聚合)rule, closed, labeldf.resample('W').sum()
Series.shift()时间偏移 (滞后/超前)periods, freq, fill_valuesales.shift(1)
Series.rolling()滚动窗口计算window, min_periods, centertemp.rolling(7).mean()

时间序列处理管线 (Pandas)

📄 原始数据 CSV / 列表 📆 DatetimeIndex to_datetime / date_range 索引设置 ⚡ 核心操作 resample · shift · rolling 聚合 / 滞后 / 滑动窗口 特征工程 📈 预测 模型输入
🐍 Python 代码 · 时间序列处理实战
import pandas as pd
import numpy as np

# 1. 创建 DatetimeIndex
dates = pd.date_range(start='2024-01-01', periods=10, freq='D')
ts = pd.Series(np.random.randn(10), index=dates)
print(ts.index)  # DatetimeIndex

# 2. 读取时间序列数据 (模拟)
df = pd.read_csv('sales.csv', parse_dates=['date'], index_col='date')

# 3. 重采样:按周求和
weekly = df['sales'].resample('W').sum()

# 4. 时间偏移:滞后1天
df['sales_lag1'] = df['sales'].shift(1)

# 5. 滚动窗口:7日移动平均
df['sales_ma7'] = df['sales'].rolling(window=7, min_periods=3).mean()

# 6. 差分 (一阶)
df['diff'] = df['sales'] - df['sales'].shift(1)

print(df.head())

🌀 滚动窗口 (rolling) 小贴士

  • window 可以是整数 (观测数) 或时间偏移量 (如 '7D')
  • min_periods 控制最少非NaN值,避免早期数据缺失
  • center=True 使窗口标签居中
  • 支持 .mean(), .std(), .corr(), .apply() 自定义函数

⏱️ 常用频率别名

  • D — 日
  • W — 周
  • M — 月
  • Q — 季
  • Y — 年
  • H — 小时
  • T/min — 分钟
  • S — 秒

📌 偏移与滚动对比

shift移动整个序列 (滞后/超前)
rolling滑动窗口聚合 (局部统计)
resample改变时间频率 (降/升采样)