Python如何进行数据平滑处理_使用Pandas滚动中位数计算

滚动中位数比均值更抗异常值,因其仅依赖排序后中间位置的值,单个极值不影响结果;而滚动均值易受噪声污染,适用于监控预处理、IoT清洗等场景,但性能较慢且对NaN敏感。滚动中位数为什么比均值更抗异常值因为中位数不依赖所有值的大小,只看排序后中间位置;单个极大/极小值不会拉偏结果。而 rolling().mean() 会直接被污染,尤其在传感器数据、日志响应时间这类含突发噪声的场景里,平滑后仍残留毛刺。适用场景:监控指标突增检测前的预处理、IoT设备原始读数清洗、金融tick数据去噪注意 rolling().median() 默认不支持 min_periods 小于窗口长度(Pandas ≤ 2.0),若首几个点要补值,得手动用 fillna()性能上比均值慢约3--5倍(内部需排序),窗口大(如 window=1000)时明显卡顿,建议先采样或用 numpy.median 手动分块如何正确设置 rolling().median() 的 window 和 center 参数窗口大小不是拍脑袋定的:太小去不掉噪声,太大抹平真实变化。常见错误是把 window 设成固定秒数却忽略采样频率不均------比如用 window=5 处理每秒10条的数据,实际覆盖0.5秒,但若某段数据丢包,时间跨度就乱了。时间序列优先用时间偏移: df'value'.rolling('2S').median()(自动对齐时间索引)等间隔数值序列用整数窗口:df'value'.rolling(window=7).median()(对应7个采样点)center=True 让输出与原位置对齐(中点对中点),但首尾会多出 NaN;center=False(默认)则结果左对齐,首 window-1 个值为 NaN若需首尾填充,别用 min_periods=1(它只是降低计算门槛,不解决缺失),应接 .fillna(method='bfill').fillna(method='ffill')rolling().median() 在 NaN 处的行为和修复方式默认遇到 NaN 就中断计算:哪怕窗口内只有一个 NaN,整个窗口结果就是 NaN。这和 mean() 的 skipna=True 行为不同------median() 没有跳过选项。检查原始数据:先跑 df'value'.isna().sum(),确认是否真有缺失而非全零伪装预填充再滚动:用插值(df'value'.interpolate())或前向填充(df'value'.ffill()),别直接删行(会破坏时间连续性)极端情况可改用 scipy.signal.medfilt,它默认忽略边界并支持奇数窗口,但不认 Pandas 时间索引,需转 numpy.ndarray替代方案:当 rolling().median() 不够用时该换什么滚动中位数本质是局部排序,无法处理趋势漂移或周期性干扰。比如温度数据白天缓慢上升+夜间骤降,单纯中位数会滞后且压扁峰谷。 Tellers AI Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。

相关推荐
杨充21 分钟前
1.3 浮点型数据设计灵魂
开发语言·python·算法
meilindehuzi_a1 小时前
深入浅出数据结构:Python 字典(Dict)与集合(Set)的哈希表底层全链路追踪
数据结构·python·散列表
Lucas凉皮1 小时前
20243408 2025-2026-2 《Python程序设计》综合实践报告
python·实验报告
键盘上的猫头鹰1 小时前
【MySQL 教程(八)】索引、事务、用户管理、导入导出与分页查询
数据库·python·mysql
Royzst1 小时前
数据库知识点
数据库
雪的季节2 小时前
企业级 Qt 全功能项目
开发语言·数据库·qt
薛定谔的猫-菜鸟程序员2 小时前
2小时智能体开发一个智能体?我用CodeArts Agent 和 AtomCode 开发了一个适老化智能体。
人工智能·python·agent
宋浮檀s2 小时前
应急响应——Web漏洞:命令执行+SSRF+弱口令
运维·数据库·sql·网络安全·oracle·应急响应
bigfootyazi3 小时前
python爬虫-基本库-urllib库(常用速查)
开发语言·爬虫·python
瑶总迷弟3 小时前
使用 mis-tei 在昇腾310P上部署 bge-m3模型
pytorch·python·华为·语言模型·自然语言处理·cnn·unix