pandas rolling 滑动窗口
572 字
3 分钟
pandas rolling 滑动窗口
pandas rolling 滑动窗口
滑动窗口常用于平滑波动、计算移动平均、观察趋势。它不是简单地多算几行,而是在每个时间点回看前一段数据。
使用 rolling 前,要先确认数据已经按时间排序,并且时间粒度符合分析目标。
固定行数窗口
df = df.sort_values("date")df["ma7"] = df["value"].rolling(window=7, min_periods=1).mean()df["sum7"] = df["value"].rolling(window=7, min_periods=1).sum()window=7 表示最近 7 行,不一定是最近 7 天。如果数据缺日期或一天多条记录,要特别小心。
基于时间窗口
ts = df.sort_values("date").set_index("date")ts["ma7d"] = ts["value"].rolling("7D", min_periods=1).mean()时间窗口要求索引是 datetime。它更适合不规则时间间隔的数据。
分组滑动窗口
df["user_ma3"] = ( df.sort_values("date") .groupby("user_id")["value"] .transform(lambda s: s.rolling(3, min_periods=1).mean()))检查点
-
是否按时间排序。
-
窗口是按行还是按时间。
-
前几行不足窗口时如何处理。
-
是否发生了不同用户或类别之间的数据串联。
实战复盘
写《pandas rolling 滑动窗口》这类数据分析文章时,我会强制保留“检查点”。因为数据分析里最危险的不是报错,而是代码顺利跑完却得到错误结论。
一个合格的 pandas 步骤,至少要能回答:输入多少行、输出多少行、哪些字段被修改、失败值有多少、是否有样本可以人工复核。缺少这些信息,代码就很难进入正式流程。
如果以后把这些文章串成系列,可以按读取、检查、清洗、变换、统计、导出排列。这样读者能从原始数据一路走到可交付结果。
最小验收样例
验收《pandas rolling 滑动窗口》时,我会手写一个三到五行的小 DataFrame:一行正常数据,一行缺失或异常数据,一行边界数据。先让示例在小表上跑通,再换成完整数据集。
小表的好处是结果可以人工计算。只要人工结果和 pandas 输出对不上,就说明代码逻辑或字段口径还没想清楚。这个过程比直接在大表上调试更可靠。
小结
rolling 的关键是明确窗口含义。窗口按行还是按时间、是否分组,会直接改变结果解释。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
pandas rolling 滑动窗口
https://blog.tjcheng.cn/posts/backfill/2026-05-25/pandas-window-rolling/相关文章智能推荐
1
pandas 缺失值处理
数据分析记录 pandas 中缺失值检查、删除、填充和简单统计的常用写法。
2
pandas 分析报告流程
数据分析整理从原始数据到 pandas 分析报告的完整流程,强调可复查和可交付。
3
pandas 交叉表统计
数据分析记录 pandas crosstab 交叉表的用法,用于分析两个分类变量之间的关系。
4
pandas 抽样检查数据
数据分析说明如何用 pandas 抽样检查数据,避免只看 head 带来的偏差。
5
pandas 导出 Excel 笔记
数据分析记录 pandas 导出 Excel 时多 sheet、索引、列宽和结果复核的常用做法。
随机文章随机推荐













