楼主: CDA网校
217 0

5个实用的时间序列分析Python脚本 [推广有奖]

管理员

已卖:189份资源

泰斗

12%

还不是VIP/贵宾

-

威望
3 级
论坛币
155498 个
通用积分
18881.1386
学术水平
308 点
热心指数
320 点
信用等级
283 点
经验
244264 点
帖子
7873
精华
19
在线时间
4564 小时
注册时间
2019-9-13
最后登录
2026-9-30

初级热心勋章

楼主
CDA网校 学生认证  发表于 2026-5-20 16:27:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

引言

处理时间序列数据需要完成一系列固定任务:原始数据往往间隔不规律,需要重新采样;异常峰值需在扭曲后续分析前识别出来;趋势和季节性模式需要从噪声中分离;而当你有多个时间序列时,仅通过快速视觉扫描无法了解它们之间的关联。

西北大学(NWU)——分析、人工智能与领导力技能 分析、人工智能与领导力技能。

这5个Python脚本可处理这些常见的时间序列任务。它们设计用于标准CSV或Excel输入,能生成清晰的输出,且易于针对不同数据集进行配置。

西北大学(NWU)——分析、人工智能与领导力技能 分析、人工智能与领导力技能。

你可以在GitHub上获取所有脚本。

1. 不规则时间序列的重采样与聚合

痛点

现实世界中的时间序列数据很少以均匀间隔出现。传感器读数、交易日志和事件流存在间隙、重复项和不一致的时间戳。在进行任何有意义的分析之前,需要将数据对齐到一致的频率。

脚本功能

读取包含日期时间列和一个或多个数值列的CSV或Excel文件,按你指定的频率进行重采样,并对每列应用聚合函数。填充或标记数据间隙,并生成包含更改摘要的清晰输出文件。

工作原理

该脚本使用pandas解析日期时间列并将其设为索引,然后使用可配置的频率字符串调用resample()方法。每列的聚合方法在配置中定义,因此温度列可使用均值(mean),而销售额列可使用求和(sum)。重采样后缺失的时间间隔可根据你的设置,通过前向填充、插值或显式标记NaN值来处理。间隙报告将列出原始数据中所有缺失数据的时间间隔。

⏩ Get the time series resampler sc ript

2. 时间序列数据中的异常检测

痛点

时间序列中单个异常峰值或下降可能会扭曲平均值、破坏下游模型,并掩盖真实趋势。在数据量较大时,通过扫描图表或原始值手动识别这些点是不切实际的。

脚本功能

扫描时间序列文件中的一个或多个数值列,并使用三种检测方法(z分数法、四分位距法、滚动统计法)中的任意一种,标记超出预期范围的数据点。输出带有异常标记的注释文件和单独的摘要报告。

工作原理

z分数法会标记标准化值超出可配置阈值(默认±3)的数据点;四分位距(IQR)法会标记超出1.5倍四分位距的数据点;滚动统计法在可配置的窗口上计算移动均值和标准差,并标记与局部上下文偏差显著的数据点,这适用于具有强烈趋势或季节性的时间序列。三种方法可同时运行,输出列会记录每个点是被哪种方法标记的。可选的--plot参数会为每列生成一个图表,并突出显示异常点。

⏩ Get the time series resampler sc ript

3. 将时间序列分解为趋势、季节性和残差

痛点

一个时间序列通常由多个组件组成:长期趋势、重复的季节性模式和不规则的残差噪声。对整个序列进行分析很难清晰理解其中任何一个组件。

脚本功能

对数值列应用经典时间序列分解,将观测序列分离为趋势、季节性和残差三个组件。支持加法和乘法两种分解模型。将每个组件作为一列导出到输出文件,并保存多面板图表。

工作原理

脚本在必要时对目标列进行重采样以确保频率一致,然后使用statsmodels.tsa.seasonal.seasonal_decompose()方法进行分解。分解周期可配置:加法分解适用于季节性变化幅度大致恒定的序列,乘法分解适用于季节性变化随趋势水平缩放的序列。输出的Excel文件包含原始序列以及三个提取出的组件,保存的图表会将四个面板(原始序列、趋势、季节性、残差)堆叠显示。

⏩ Get the time series resampler sc ript

4. 使用季节性自回归积分移动平均模型(SARIMA)进行预测

痛点

根据时间序列生成预测通常涉及模型选择、参数调优和验证步骤,这些都需要统计知识才能正确完成。每次从零开始设置既耗时,且非规范的操作会导致预测结果难以信任和复现。

脚本功能

将季节性自回归积分移动平均(SARIMA)模型拟合到时间序列列,生成可配置周期数的预测结果,并将结果写入输出文件,包括预测值、置信区间以及在预留验证周期上的基本准确性指标。可选通过最小化赤池信息准则(AIC)自动选择模型参数。

工作原理

脚本使用statsmodels.tsa.statespace.sarimax.SARIMAX进行模型拟合。当设置--auto-order参数时,它会在可配置的ARIMA和季节性参数范围内进行轻量级网格搜索,选择AIC最低的参数组合。序列会被分为训练集和预留测试集(测试集周期数可配置),在测试集上使用平均绝对误差(MAE)和均方根误差(RMSE)报告准确性,然后在完整序列上重新拟合最终模型以生成向前预测。结果包括点预测和95%置信区间,保存的预测图表会显示历史序列、测试周期的实际值与预测值,以及带有置信带的向前预测。

⏩ Get the time series resampler sc ript

5. 多个时间序列的比较

痛点

当处理多个相关时间序列(不同产品、地区、传感器或指标)时,仅将它们显示在同一图表上无法了解它们的联动关系。需要计算相关性分析、滞后关系和对齐的摘要统计数据,而对多组序列进行这些计算很快会变得繁琐。

脚本功能

读取包含多个时间序列列的文件,将它们对齐到相同频率,并生成多标签比较报告,包括成对相关性、滞后分析(可配置滞后量的互相关)和并排摘要统计表。为相关性最高的几组序列生成图表。

工作原理

脚本使用pandas在重采样后将所有列对齐到共享的日期时间索引。计算成对的皮尔逊相关系数和斯皮尔曼相关系数,并写入相关性矩阵标签页;为每对序列计算可配置最大滞后量的互相关,识别每对序列的峰值滞后量,这有助于发现领先/滞后关系;摘要标签页包含每个序列的均值、标准差、最小值、最大值和趋势方向(线性拟合的正负斜率);相关性最高的五组序列各在专用图表标签页中生成双轴折线图。

⏩ Get the time series resampler sc ript

总结

这5个脚本涵盖了处理时间序列数据的核心任务。它们可独立使用或按顺序使用:先重采样,再检测异常,接着分解序列,进行预测,最后比较多个序列。

入门方法:首先下载你计划使用的脚本,并安装其README文件中列出的所有依赖项;然后更新脚本顶部的配置部分,使其与你的具体数据和列名对齐;在完整数据集上运行脚本之前,先在小样本上测试,确认输出正确;满意结果后,可将其安排定时运行或集成到现有数据管道中。

祝分析顺利!

推荐学习书籍 《CDA一级教材》适合CDA一级考生备考,也适合业务及数据分析岗位的从业者提升自我。完整电子版已上线CDA网校,累计已有10万+在读~ !

免费加入阅读:https://edu.cda.cn/goods/show/3151?targetId=5147&preview=0

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:时间序列分析 python 时间序列 Time Series Resample
相关内容:Python时间序列分析

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
扫码
拉您进交流群
GMT+8, 2026-10-4 13:25