Pandas 中的时间序列
DatetimeIndex、resample()、rolling()、shift()、日期范围生成与重采样
Pandas 中的时间序列 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。
pandas 中的时间处理
该库提供一流的日期时间支持。将字符串转换为时间戳并按时间建立索引后,就可以使用重采样、滚动窗口和滞后特征。
使用 to_datetime 解析
pd.to_datetime 会将字符串或数字转换为规范的时间戳对象,并自动推断最常见的格式。
import pandas as pd
d = pd.to_datetime(["2026-01-01", "2026-01-05", "2026-02-10"])
print(d)
print(d.dtype) # datetime64[ns]使用 date_range 生成日期
pd.date_range 会生成一组间隔均匀的时间戳。freq 代码控制步长:D 表示天,H 表示小时,M 表示月末,依此类推。
rng = pd.date_range("2026-01-01", periods=5, freq="D")
print(rng)
# 2026-01-01 ... 2026-01-05构建 DatetimeIndex
将日期时间列设为索引会创建 DatetimeIndex,从而启用按时间处理的切片以及 resample/rolling 工具。
ts = pd.Series([10, 12, 9, 15, 11],
index=pd.date_range("2026-01-01", periods=5, freq="D"))
print(ts)部分字符串切片
使用 DatetimeIndex 时,可以按部分日期进行切片:年份字符串或月份字符串会选中所有匹配的行。
monthly = pd.Series(range(60),
index=pd.date_range("2026-01-01", periods=60, freq="D"))
print(monthly["2026-02"].head()) # all of February使用 resample 降采样
resample 就是针对时间的分组操作。可以将数据降采样到更粗的频率,然后进行聚合,例如将每日数据汇总为每周总和。
weekly = monthly.resample("W").sum()
print(weekly.head())升采样与填充
重采样到 FINER 频率会产生缺口。结合 .ffill() 可以向前填充上一个值。
hourly = ts.resample("12H").ffill()
print(hourly.head())滚动窗口
rolling(window) 会在滑动窗口上计算统计量,是平滑噪声序列的移动平均值的基础。
roll = monthly.rolling(window=7).mean()
print(roll.head(10)) # first 6 are NaN (not enough history)滚动计算的变体
任何归约操作都可以应用于滚动窗口:mean、sum、std、最小值和最大值。7 天滚动 std 可以衡量近期波动性。
vol = monthly.rolling(7).std()
print(vol.tail())使用 shift 创建滞后值
shift(n) 会将值向前移动 n 个周期,从而创建滞后特征,并支持计算周期之间的变化。
df = pd.DataFrame({"sales": [100, 110, 105, 130]})
df["prev"] = df["sales"].shift(1)
df["pct_change"] = (df["sales"] - df["prev"]) / df["prev"]
print(df)提取日期组成部分
.dt 访问器可以提供 year、month、dayofweek 等组成部分,适合作为模型特征。
s = pd.Series(pd.date_range("2026-01-01", periods=3, freq="D"))
print(s.dt.dayofweek) # 0=Monday
print(s.dt.month)快速检查
请测试您对时间序列的掌握情况。
回顾
时间序列工具箱:
- 使用
pd.to_datetime进行解析,使用pd.date_range生成日期 DatetimeIndex支持部分字符串切片- 使用
resample(freq).agg()进行升采样或降采样 - 使用
rolling(window)计算滚动统计量 - 使用
shift(n)创建滞后值;使用.dt提取日期组成部分
常见问题解答
「Pandas 中的时间序列」课时是免费的吗?
是的 — 「Pandas 中的时间序列」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。
「Pandas 中的时间序列」这节课中我会学到什么?
DatetimeIndex、resample()、rolling()、shift()、日期范围生成与重采样 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「Pandas 中的时间序列」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- GroupBy 与聚合
- 数据透视表与交叉制表
- 高级合并与连接
- Pandas 中的时间序列