时间序列特征提取的Python和Pandas代码示例

使用PandasPython从时间序列数据中提取有意义的特征,包括移动平均,自相关和傅里叶变换。

前言

时间序列分析是理解和预测各个行业(如金融、经济、医疗保健等)趋势的强大工具。特征提取是这一过程中的关键步骤,它涉及将原始数据转换为有意义的特征,可用于训练模型进行预测和分析。在本文中,我们将探索使用Python和Pandas的时间序列特征提取技术。

在深入研究特征提取之前,让我们简要回顾一下时间序列数据。时间序列数据是按时间顺序索引的数据点序列。时间序列数据的例子包括股票价格、温度测量和交通数据。时间序列数据可以是单变量,也可以是多变量。单变量时间序列数据只有一个变量,而多变量时间序列数据有多个变量。

图片

有各种各样的特征提取技术可以用于时间序列分析。在本文中,我们将介绍以下技术:

ResamplingMoving AverageExponential SmoothingAutocorrelationFourier Transform

1、Resampling

Resampling 重采样主要是改变时间序列数据的频率。这对于平滑噪声或将数据采样到较低的频率很有用。Pandas提供了resample()方法对时间序列数据进行重新采样。resample()方法可用于对数据进行上采样或下采样。下面是一个如何将时间序列降采样到每日频率的示例:

import pandas as pd  # create a time series with minute frequency ts = pd.Series([1, 2, 3, 4, 5], index=pd.date_range('2022-01-01', periods=5, freq='T'))  # downsample to daily frequency daily_ts = ts.resample('D').sum()  print(daily_ts)

登录后复制

在上面的例子中,我们创建了一个以分钟为频率的时间序列,然后使用resample()方法将其采样到每天的频率。

图片

2、Moving Average

Moving Average 移动平均是一种通过在滚动窗口上求平均值来平滑时间序列数据的技术。可以帮助去除噪声并得到数据的趋势。Pandas提供了rolling()方法来计算时间序列的平均值。下面是一个如何计算时间序列的平均值的例子:

import pandas as pd  # create a time series ts = pd.Series([1, 2, 3, 4, 5])  # calculate the rolling mean with a window size of 3 rolling_mean = ts.rolling(window=3).mean()  print(rolling_mean)

登录后复制

我们创建了一个时间序列,然后使用rolling()方法计算窗口大小为3的移动平均值。

图片

可以看到前两个值因为没有到达移动平均的最小数量3,所以会产生NAN,如果需要的话可以再使用fillna方法进行填充。

3、Exponential Smoothing

Exponential Smoothing 指数平滑是一种通过赋予最近值更多权重来平滑时间序列数据的技术。它可以帮助去除噪声获得数据的趋势。Pandas提供了计算指数移动平均的ewm()方法。

import pandas as pd ts = pd.Series([1, 2, 3, 4, 5]) ts.ewm( alpha =0.5).mean()

登录后复制

时间序列特征提取的Python和Pandas代码示例

在上面的例子中,我们创建了一个时间序列,然后使用ewm()方法计算平滑因子为0.5的指数移动平均。

ewm有很多的参数,这里我们介绍几个主要的。

com:根据质心指定衰减

图片

span 根据范围指定衰减

图片

halflife 根据半衰期指定衰减

图片

alpha 指定平滑系数α

图片

以上4个参数都是指定平滑系数α,只是前三个是根据条件计算出来的,最后一个是手动指定,所以至少要有一个,例如上面的例子我们就直接手动设定了0.5

min_periods 窗口中具有值的最小观察数,默认 0。

adjust 是否进行误差修正 默认True。

adjust =Ture时公式如下:

图片

adjust =False

图片

4、Autocorrelation

Autocorrelation 自相关是一种用于测量时间序列与其滞后版本之间相关性的技术。可以识别数据中重复的模式。Pandas提供了autocorr()方法来计算自相关性。

import pandas as pd  # create a time series ts = pd.Series([1, 2, 3, 4, 5])  # calculate the autocorrelation with a lag of 1 autocorr = ts.autocorr(lag=1)  print(autocorr)

登录后复制

图片

5、Fourier Transform

Fourier Transform 傅里叶变换是一种将时间序列数据从时域变换到频域的技术。可以识别数据中的周期性模式。我们可以使用numpy的fft()方法来计算时间序列的快速傅里叶变换。

import pandas as pd import numpy as np  # create a time series ts = pd.Series([1, 2, 3, 4, 5])  # calculate the Fourier transform fft = pd.Series(np.fft.fft(ts).real)  print(fft)

登录后复制

图片

这里我们只显示了实数的部分。

总结

在本文中,我们介绍了几种使用Python和Pandas的时间序列特征提取技术。这些技术可以帮助将原始时间序列数据转换为可用于分析和预测的有意义的特征,在训练机器学习模型时,这些特征都可以当作额外的数据输入到模型中,可以增加模型的预测能力。

以上就是时间序列特征提取的Python和Pandas代码示例的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2241881.html

(0)
上一篇 2025年2月26日 20:45:45
下一篇 2025年1月4日 01:31:37

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 小白必读!十大被低估的Python自带库!

    大 大家在学习python的过程中,都会了解到python的一个强大的功能在于各种强大的第三方库函数,大家只需要通过pip install 即可安装我们需要的库函数。 家往往只是关注自己安装的python库,却忽略了python自带的库函数…

    2025年2月26日 编程技术
    200
  • 用于清理数据的五个简单有效 Python 脚本

    将 PDF 转换为 CSV 在机器学习中,我们应该少一些“数据清理”,多一些“数据准备”。当我们需要从白皮书、电子书或其他PDF文档中抓取数据时,这个脚本为我节省了很多时间。 import tabula#获取文件pdf_filename =…

    2025年2月26日
    200
  • Python爬取天气数据及可视化分析

    正文  大家好,我是Python人工智能技术 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物、安排出行,每天的气温、风速风向、相对湿度、空气质量等成为关注的焦点。得到温湿度度变化曲线、空气质量图、风向雷达图等结果,为获得未来天气信…

    2025年2月26日 编程技术
    200
  • Python 批量加水印只需一行命令!

    工作的时候,尤其是自媒体工作者,必备水印添加工具以保护知识产权图片,网上有许多的在线/下载的水印添加工具,但他们或多或少都存在以下问题: 1. 在线工具需要将图片上传到对方服务器,信息不安全。 2. 很多工具不具备批量处理功能。 3. 很多…

    2025年2月26日 编程技术
    200
  • 一行 Python 代码实现并行

    Python 在程序并行化方面多少有些声名狼藉。撇开技术上的问题,例如线程的实现和 GIL,我觉得错误的教学指导才是主要问题。常见的经典 Python 多线程、多进程教程多显得偏”重”。而且往往隔靴搔痒,没有深入探讨…

    2025年2月26日
    200
  • Python 字符串总结,建议收藏!

    什么是 Python 字符串 字符串是包含一系列字符的对象。字符是长度为 1 的字符串。在 Python 中,单个字符也是字符串。但是比较有意思的是,Python 编程语言中是没有字符数据类型的,不过在 C、Kotlin 和 Java 等其…

    2025年2月26日
    200
  • Python使用Dash开发网页应用

    Python Dash开发Web应用的控件基础 本文主要是通过Dash的Checklist组件,简单介绍使用Dash开发的Web应用 展示效果如下: python dash简单基础 Dash应用程序由两部分组成: 第一部分是应用程序的布局(…

    2025年2月26日
    200
  • Python自动化办公之Excel拆分并自动发邮件

    需求 需要向大约 500 名用户发送带有 Excel 附件的电子邮件,同时必须按用户从主 Excel 文件中拆分数据以创建他们自己的特定文件,然后将该文件通过电子邮件发送给正确的用户 需求解析 大致的流程就是上图,先拆分 Excel 数据,…

    2025年2月26日 编程技术
    200
  • 提高数据科学效率的八个Python神库!

    1、Optuna Optuna 是一个开源的超参数优化框架,它可以自动为机器学习模型找到最佳超参数。 最基本的(也可能是众所周知的)替代方案是 sklearn 的 GridSearchCV,它将尝试多种超参数组合并根据交叉验证选择最佳组合。…

    2025年2月26日
    200
  • 用Python处理MP4与GIF格式互转,简单到爆!

    上次公众号写文章的时候,遇到个问题,公众号插入视频文件太繁琐,一个很小的视频,作为视频传上去平台还要审核,播放的时候也没gif来的直接。 于是想着找个工具将mp4转换成gif。网上搜一下,在线的工具好多,但是各种套路,有些要点广告,有些要先…

    2025年2月26日
    200

发表回复

登录后才能评论