T
traeai
登录
返回首页
KDnuggets

5 个有用的 Python 脚本进行时间序列分析

8.5Score
5 个有用的 Python 脚本进行时间序列分析

TL;DR · AI 摘要

本文介绍了五个实用的 Python 脚本,用于处理时间序列数据中的常见任务,包括重采样、异常检测、趋势分解等。

核心要点

  • 提供了五个 Python 脚本,涵盖时间序列数据处理的常见任务。
  • 脚本支持 CSV 和 Excel 输入,输出干净的数据文件,并附带详细报告。
  • 脚本功能包括重采样、异常检测、趋势和季节性分解等。

结构提纲

按章节快速跳转。

  1. 介绍时间序列数据处理的常见任务。

  2. 处理不规则时间间隔的数据,对齐到一致频率。

  3. 识别并标记超出预期范围的数据点。

  4. 分离时间序列中的长期趋势、季节性模式和噪声。

  5. 分析多个时间序列之间的关系。

  6. 使用 ARIMA 模型进行时间序列预测。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 5 Useful Python Scripts for Time Series Analysis
    • 引言
    • 1. 重采样和聚合不规则时间序列
    • 2. 检测时间序列数据中的异常
    • 3. 将序列分解为趋势、季节性和残差
    • 4. 多系列相关性分析
    • 5. 时间序列预测

金句 / Highlights

值得收藏与分享的关键句。

  • 现实世界中的时间序列数据很少以均匀的时间间隔到达。传感器读数、交易日志和事件流存在缺失、重复和不一致的时间戳。

    第 2 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • 时间序列中的单个异常峰值或下降可能会扭曲平均值,破坏下游模型,并掩盖真实趋势。

    第 4 段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • 时间序列通常由几个组成部分组成:长期趋势、重复的季节性模式和不规则的残差噪声。

    第 6 段

    ⬇︎ 下载 PNG𝕏 分享到 X
#Python#时间序列分析#数据处理
打开原文
Image 1: 5 Useful Python Scripts for Time Series Analysis

#介绍

处理时间序列数据涉及一系列固定的任务。原始数据以不规则的间隔到达,需要重采样。在异常峰值扭曲下游分析之前,需要识别这些峰值。趋势和季节性模式需要从噪声中分离出来。当有多个序列时,理解它们之间的关系需要的不仅仅是快速的视觉扫描。

这五个 Python 脚本可以处理这些常见的时间序列任务。它们设计用于处理标准的 CSV 或 Excel 输入,生成干净的输出,并且可以轻松配置以适应不同的数据集。

**您可以在 GitHub 上获取所有脚本**.

#1. 重采样和聚合不规则时间序列

#### //痛点

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

#### //脚本的功能

该脚本接受一个包含日期时间列和一个或多个值列的 CSV 或 Excel 文件,将其重采样到您指定的频率,并按列应用聚合函数。填充或标记缺失的数据,并写入一个干净的输出文件,其中包含更改的摘要。

#### //工作原理

脚本使用 [pandas](https://pandas.pydata.org/) 解析日期时间列,将其设置为索引,并使用 resample() 方法与可配置的频率字符串。每列的聚合方法在配置中定义,因此温度列可以使用均值,而销售列可以使用总和。重采样后缺失的时间间隔根据您的设置通过前向填充、插值或显式 NaN 标记来处理。间隙报告列出原始数据中每个缺失的时间间隔。

**获取时间序列重采样脚本**

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

#### //痛点

时间序列中的单个异常峰值或下降会偏斜平均值,破坏下游模型,并掩盖真实趋势。手动通过扫描图表或原始值来识别这些点在任何有意义的数据量下都是不切实际的。

#### //脚本的功能

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

#### //工作原理

z-score 方法标记标准化值超过可配置阈值(默认 ±3)的点。四分位距(IQR)方法标记超出 1.5 倍四分位距的点。滚动方法在可配置的窗口上计算移动均值和标准差,并标记显著偏离局部上下文的点。这对于具有强烈趋势或季节性的系列非常有用。所有三种方法可以一起运行;输出列记录每个点是由哪种方法标记的。可选的 --plot 标志为每个列保存一个图表,突出显示异常点。

**获取异常检测脚本**

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

#### //痛点

时间序列通常是几个组件的组合:长期趋势、重复的季节性模式和不规则的残差噪声。整体分析序列使得难以清晰地理解任何一个组件。

#### //脚本的功能

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

#### //工作原理

脚本使用 [`statsmodels.tsa.seasonal.seasonal_decompose()`](https://www.statsmodels.org/stable/generated/statsmodels.tsa.seasonal.seasonal_decompose.html) 对目标列进行分解,如果需要,先将其重采样到一致的频率。分解周期是可配置的。加法分解适用于季节性变化幅度大致恒定的系列;乘法分解适用于季节性变化随趋势水平变化的系列。输出的 Excel 文件包含原始序列以及提取的三个组件。保存的图表显示四个堆叠的面板。

**获取时间序列分解脚本**

#4. 使用季节性自回归积分滑动平均模型进行预测

#### //痛点

从时间序列生成预测通常涉及模型选择、参数调整和验证步骤,这些步骤需要统计知识才能正确完成。每次从头开始设置这些步骤既耗时又繁琐,非正式地进行这些步骤会产生难以信任或重现的预测。

#### //脚本的功能

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

#### //工作原理

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

**获取 SARIMA 预测脚本**

#5. 比较多个时间序列

#### //痛点

在处理多个相关的时间序列——不同的产品、地区、传感器或指标——时,了解它们如何一起变化需要的不仅仅是将它们放在同一张图表上。相关性分析、滞后关系和对齐的汇总统计都需要计算,而跨多个系列对这些进行计算很快就会变得难以管理。

#### //脚本功能

接受包含多个时间序列列的文件,将它们对齐到公共频率,并生成一个多标签比较报告,涵盖成对相关性、滞后分析(可配置滞后的交叉相关)和并排汇总统计表。为最相关的成对生成图表。

#### //工作原理

脚本使用 pandas 将所有列对齐到共享的日期时间索引后重采样。计算成对的 Pearson 和 Spearman 相关性并写入相关矩阵标签页。对于每对计算交叉相关性,直到可配置的最大滞后,识别每对峰值的滞后,这对于发现领先/滞后关系非常有用。摘要标签页包括每个系列的均值、标准差、最小值、最大值和趋势方向(线性拟合的正/负斜率)。最相关的前五对各自在专用图表标签页中获得双轴折线图。

**获取多系列比较脚本**

#总结

这五个脚本涵盖了处理时间序列数据的核心任务。它们设计为可以独立或顺序使用:首先重采样,检测异常,分解,预测,然后跨系列比较。

开始之前,请先下载您计划使用的脚本并安装其 README 文件中列出的所有依赖项。接下来,更新脚本顶部的配置部分,使其与您的具体数据和列名对齐。在运行完整数据集之前,先在小样本上测试脚本以确认输出正确。一旦对结果满意,您可以安排运行或将其集成到现有的数据管道中。

祝分析愉快!

[](https://twitter.com/balawc27)Bala Priya C**** 是来自印度的开发人员和技术作家。她喜欢在数学、编程、数据科学和内容创作的交汇处工作。她的兴趣和专长领域包括 DevOps、数据科学和自然语言处理。她喜欢阅读、写作、编码和咖啡!目前,她正在通过撰写教程、操作指南、意见文章等来学习并向开发者社区分享她的知识。Bala 还创建了引人入胜的资源概览和编码教程。

AI 可能会生成不准确的信息,请核实重要内容

5 个有用的 Python 脚本进行时间序列分析 | KDnuggets | traeai