python数据分析——时间序列

时间序列

  • 前言
  • 一、Datetime 模块
    • 常用函数和数据结构的详细解释
    • datetime模块
    • 示例一
    • 示例二
  • 二、时间运算
    • 示例一
    • 示例二
    • 示例三
  • 三、时间序列分析
    • 自回归(Autoregressive model/AR)模型
      • 示例
    • 滑动平均(moving average model/MA)模型
      • 示例
    • 自回归滑动平均(Autoregressive moving average model/ARMA) 模型
      • 示例


前言

时间序列是按照时间顺序排列的一系列随时间变化而变化的数据点或观测值。时间序列可以是离散的,例如每月的销售数据,也可以是连续的,例如气温和股票价格等。时间序列常用于预测和分析未来的趋势,例如经济增长、股票走势、天气变化等。

时间序列分析是数据分析中的重要部分,它涉及到对随时间变化的数据进行研究,以揭示其内在规律、趋势和周期性变化。Python作为一种强大的编程语言,拥有众多的数据处理和可视化库,如pandasnumpymatplotlibseaborn等,这些库在处理时间序列数据时表现出色。

首先,我们需要明确什么是时间序列数据。时间序列数据是按照时间顺序排列的一系列数据点,这些数据点可以是任何类型的测量值,如股票价格、气温、销售额等。时间序列分析的目标是通过这些数据点来理解和预测未来的趋势和模式。

在Python中,pandas库是处理时间序列数据的首选工具。pandas提供了DataFrame数据结构,可以轻松地导入、清洗、转换和分析时间序列数据。例如,我们可以使用pandasread_csv函数导入CSV格式的时间序列数据,然后使用to_datetime函数将日期列转换为pandasDateTimeIndex格式,这样可以更方便地进行时间序列分析。

一旦数据被导入并准备好,我们就可以使用pandas提供的各种函数来进行时间序列分析。例如,我们可以使用rolling函数来计算移动平均或移动标准差,以平滑数据并消除短期噪声。我们还可以使用diff函数来计算数据的差分,以揭示数据的趋势和周期性变化。

除了基本的统计分析,时间序列分析还包括更高级的技术,如ARIMA模型、指数平滑和傅里叶分析等。这些技术可以帮助我们更深入地理解数据的内在规律,并用于预测未来的趋势。在Python中,我们可以使用statsmodels库来实现这些高级技术。

最后,可视化是时间序列分析的重要组成部分。通过绘制时间序列图、自相关图、部分自相关图等图表,我们可以直观地了解数据的趋势、周期性和季节性变化。在Python中,matplotlibseaborn库提供了丰富的绘图功能,可以帮助我们创建高质量的可视化图表。


一、Datetime 模块

Python标准库中包含了datetime模块,该模块提供了非常强大的功能来处理日期和时间。在Pandas中,时间序列数据可以通过多种方式表示,包括Python的原生datetime对象、字符串、整数等。

Datetime模块提供了将这些不同的时间表示方式转换为Pandas中的Datetime类型的函数,以及一系列常用的时间序列操作函数。

常用函数和数据结构的详细解释

以下是Datetime模块的一些常用函数和数据结构的详细解释:

  1. to_datetime函数:将字符串或整数等转换为Pandas中的Datetime类型。它能够自动推断日期的格式,并将其转换为Pandas中的Datetime类型。例如,可以通过调用to_datetime函数将字符串"2021-01-01"转换为Datetime对象。

  2. DatetimeIndex类:表示由Datetime类型组成的时间序列索引。它可以用于创建一个Datetime类型的索引,用于对时间序列数据进行索引和切片操作。

  3. Timestamp类:表示一个具体的时间点。它是Datetime模块中最常用的数据结构之一,可以用于表示一个具体的日期和时间。例如,可以用Timestamp类表示"2021-01-01 12:00:00"这个特定的时间点。

  4. DateOffset类:表示一个时间偏移量,用于对时间进行增减操作。它可以与Datetime类型的对象进行加减运算,用于计算相对于一个特定时间点的偏移量。例如,可以通过将一个DateOffset对象加到一个Datetime对象上,得到一个新的Datetime对象。

  5. Period类:表示一个时间段。它是Datetime模块中用于表示时间段的数据结构之一,可以表示一个时间段的开始和结束时间。例如,可以用Period类表示"2021-01-01"到"2021-01-31"这个时间段。

除了以上介绍的函数和数据结构之外,Datetime模块还提供了一系列的时间序列操作函数,包括日期的加减运算、日期的比较判断、日期的格式化输出等。通过使用这些函数,可以方便地进行时间序列数据的处理和分析。

datetime模块

Python的datetime模块是Python标准库中用于处理日期和时间的模块。它提供了一系列的函数和数据结构,用于操作日期和时间。

datetime模块中的主要类和函数包括:

  1. datetime类:表示一个具体的日期和时间。这个类提供了许多方法来操作日期和时间,如获取年、月、日、时、分、秒等。

  2. date类:表示一个日期。这个类只包含年、月、日,不包含时间信息。

  3. time类:表示一个时间。这个类只包含时、分、秒,不包含日期信息。

  4. timedelta类:表示两个日期或时间之间的时间差。可以对两个日期或时间进行加减运算,得到它们之间的时间差。例如,可以计算两个日期之间相隔多少天。

  5. strftime函数:用于将datetime对象格式化为字符串。可以根据指定的格式将日期和时间对象转换成字符串,如将日期格式化为"YYYY-MM-DD"或将时间格式化为"HH:MM:SS"等。

  6. strptime函数:用于将字符串解析为datetime对象。可以根据指定的格式将字符串解析为datetime对象,如将"2021-01-01"解析为日期对象。

  7. now函数:返回当前的日期和时间。可以使用now函数获取当前的日期和时间信息。

  8. timedelta函数:用于创建一个时间差。可以使用timedelta函数创建一个指定时间差的timedelta对象,如创建一个表示5天的时间差对象。

datetime模块提供了一系列的函数和数据结构来处理日期和时间,可以方便地进行日期和时间的计算、格式化和解析等操作。它在数据分析、日志分析等领域都有广泛的应用,是Python中处理日期和时间的重要工具。

总结:datatime模块是在time模块的基础上做了封装,提供了更多更好用的类,常用的类有datetimedatetime, timedelta, tzinfo

  • date类主要用于处理年、月、日的日期数据;
  • time类主要用于处理时、分、秒的时间数据;
  • datetime类是date类和time类的综合,可以处理年、月、日、时、分、秒;
  • timedelta类主要用于做时间的加减运算;
方法(属性)说明
today()返回当地的日期
fromtimestamp(timestamp)根据给定的时间戮,返回本地日期
mindate所能表示的最小日期
maxdate所能表示的最大日期
import datetime

timestamp = 1623988800  # Represents June 18, 2021, 12:00:00 AM (UTC)

datetime_obj = datetime.datetime.fromtimestamp(timestamp)

print(datetime_obj)  # Output: 2021-06-18 00:00:00

示例一

【例】请利用Python获取当前日期。

关键技术:可以利用datetime模块date类的today()方法将当前日期保存在变量中。

通过使用date.today(),可以创建一个date类对象,其中包含了日期元素,如年、月、日,但不包含时间元素,比如时分、秒。最后,可以使用yearmonthday来捕获具体的日期元素。

import datetime
current_date= datetime. datetime. today()
print (current_date)
print (current_date. year)
print (current_date. month)
print (current_date. day)

在这里插入图片描述

示例二

【例】请利用Python获取当前日期和时间。

关键技术:可以利用datetime模块datetime类的today()方法将当前日期和时间保存在变量中。

通过使用datetime.today(),可以创建一个datetime类对象,其中包含了日期元素和时间元素,如年、月、日、时、分、秒。最后,可以使用yearmonthday来捕获具体的日期元素,通过hourminutesecond来捕获具体的时间元素。

import datetime
current_date= datetime. datetime. today()
print (current_date)
print (current_date. year)
print (current_date. month)
print (current_date. day)
print (current_date. hour)
print (current_date. minute)
print (current_date. second)

在这里插入图片描述

二、时间运算

示例一

【例】给定两个时间类型的数据,计算两个时间的不同之处。

关键技术:利用datetime将时间类型数据进行转换,然后利用减法运算计算时间的不同之处,默认输出结果转换为用("天”,"秒”)表达。

在这里插入图片描述
在这里插入图片描述

示例二

【例】如果要将输出结果转换以“天”为单位,此时应该如何处理?

关键技术:针对上例中的delta变量,利用delta.days可以将输出结果转换以“天”为单位。

在这里插入图片描述
输出结果如下所示:379

示例三

【例】如果要将输出结果转换以“秒”为单位,此时应该如何处理?

关键技术:针对上例中的delta变量,利用delta.seconds可以将输出结果转换以“秒”为单位。
在这里插入图片描述

输出结果如下所示: 53100

三、时间序列分析

时间序列是把同一事件的历史统计资料按照时间顺序排列起来得到的一组数据序列,主要的分析方法包括移动平均和指数平滑。

时间序列预测法是以时间数列所能反映的社会经济现象的发展过程和规律性进行引伸外推,预测其发展趋势的方法。

时间序列预测法就是通过编制和分析时间序列,根据时间序列所反映出来的发展过程、方向和趋势,进行类推或延伸,借以预测下一段时间或以后若干年内可能达到的水平。

自回归(Autoregressive model/AR)模型

自回归模型(Autoregressive Model,简称AR模型)仅通过时间序列变量的自身历史观测值来反映有关因素对预测目标的影响和作用,不受模型变量相互独立的假设条件约束,所构成的模型可以消除普通回归预测方法中由于自变量选择、多重共线性等造成的困难,是最常见的平稳时间序列模型之一。

考虑一个单摆系统。

设xt为第t次摆动过程中的摆幅。根据物理原理,第 t 次的摆幅xt由前一次的摆幅xt-1决定,即有xt =a1xt-10考虑到空气振动的影响,我们往往假设Xt = a1xt-1 + εt
在这里插入图片描述

其中,随机干扰εt~N(0, σ2 ),称模型为一阶自回归模型。

更一般地,可以考虑序列值x可由前p个时刻的序列值及当前的噪声表出,即xt= a1xt-1 +…+ ajXt-j+…+ apXt-p + εt模型。在这里插入图片描述

其中,a;为参数, et为白噪声,则称该序列为 p阶自回归AR ( p)

示例

【例】已知存储在d盘的给定某只股票的交易数据(timeseries_data.csv) ,请利用自回归(AR)模型进行数据拟合,输出AR模型的阶数和拟合效果图
在这里插入图片描述

滑动平均(moving average model/MA)模型

滑动平均(moving average model/MA)模型也称移动平均模型,是用过去各个时期的随机干扰或预测误差的线性组合来表达当前预测值。相比之下, AR模型是通过分析研究历史数据对当前数据的影响进行建模。

q阶MA模型的公式为:xt = μ + at - θ1at-1 - … - θqat-q在这里插入图片描述

示例

【例】同样对于上述给定的股票交易数据,请利用滑动平均(MA)模型进行数据拟合,输出MA模型的拟合效果图。
在这里插入图片描述

自回归滑动平均(Autoregressive moving average model/ARMA) 模型

ARMA模型就是AR模型和MA模型混合。在更加复杂的情况下,一个ARMA过程可能是AR与MA过程、几个AR过程、AR与ARMA过程的迭加,也可能是测度误差较大的AR过程。

ARMA(p,q)模型公式:
在这里插入图片描述

由此可见, ARMA(p,0)模型就是AR( p )模型, ARMA(0,q)模型就是MA(q)模型。

示例

【例】同样对于上述给定的股票交易数据,请利用自回归滑动平均(ARMA)模型进行数据拟合,输出ARMA模型的拟合效果图。
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/623414.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

✬✬✬宁波iso14001认证:环境保护的“绿色光环”加持✬✬✬

🍒宁波iso14001认证:💗环境保护的“绿色光环”加持🌵 🍓说到环境保护,😂我可是满满的热情啊!⌚最近,我们公司成功🚈获得了ISO14001认证,&#x1f…

二叉树的存储结构介绍

概述 顺序存储 存储状态 存储表示 示例 缺点 链式存储 存储状态 存储表示 示例 指针域计算 空指针域数目总指针数-存储边的指针域总数-边数(n-1条边)n1个 三叉链表存储 因为根结点无双亲 空指针域数目总数-存储孩子的边数-存储双亲的边数3*n-2*(n-1)n2个

海外客户开发渠道有哪些

海外客户开发是一个多元化的过程,涉及线上与线下多个渠道。以下是一些有效的海外客户开发渠道: 平台电商: 利用国际B2B电商平台,如阿里巴巴国际站、 Globalsources、Made-in-China等,这些平台拥有庞大的国际买家流量&a…

在博弈中寻找机会:利用已知信息撬动更多有利信息

在人生的道路上,我们都在参与一场巨大的博弈,无论是职场竞争、商业战争还是人际关系,都需要我们利用已知信息去撬动更多有利的信息,以便在变数中寻找机会。这场博弈既充满挑战,又蕴含着无限可能。 博弈的本质是竞争和合…

SQL Server中怎么排查死锁问题

一、背景 我们在UAT环境压测的时候,遇到了如下的死锁异常。 Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Transaction (Process ID 82) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Re…

【Arduino】数字I/O的使用

目录 1、引脚工作模式 2、写入引脚digitaWrite() 3、读取引脚digitalRead(pin); 4、示例 跑马灯 1、引脚工作模式 Arduino通过pinMode()设置引脚的io工作模式,一共有4种模式 工作模式 Mode 说明 输出模式 OUTPUT 引脚为低阻抗状态&…

如文所示:

影响 ConnectWise 的 ScreenConnect 远程桌面访问产品的严重漏洞已被广泛利用来传播勒索软件和其他类型的恶意软件。 ConnectWise 于 2 月 19 日通知客户,它已发布针对关键身份验证绕过缺陷和高严重性路径遍历问题的补丁。该安全漏洞当时没有 CVE 标识符。第二天&am…

【Docker与Termux】闲置旧安卓手机上的NAS无缝部署方案

最近有了新手机,旧手机也闲置了,由于之前一直在寻找平价的NAS替代方案,旧手机在抽屉躺了N天后,我决定让它重新焕发光彩,努力工作,继续拉磨。 这个时代的旧手机可以满足NAS的基本配置需求,内存、硬盘、内置电源、WIFI模块、快速接口,简直是理想中的NAS形态,但是散热、R…

程序员学CFA——经济学

经济学 需求和供给分析消费者需求分析需求的相关概念需求需求定律需求函数需求曲线消费者剩余 需求弹性需求的自身价格弹性需求的交叉价格弹性需求的收入弹性 替代效应与收入效应替代效应收入效应替代效应和收入效应的综合作用 需求定律的例外 生产商供给分析供给分析的基本概念…

计算机发展史故事【14】

大象踢踏舞 如果要把电脑50 年的历史划分为两个不同的阶段,那么,1981 年无疑是个分界线。就在那一年,IBM 公司推出个人电脑PC 机,使人类社会大步跨进个人电脑新时代。今天,全世界正在使用的PC 机已达到2 亿台&#xf…

python爬虫(五)之新出行汽车爬虫

python爬虫(五)之新出行汽车爬虫 接完最后一单,终于肝完了最后一个python爬虫——新出行爬虫,将https://www.xchuxing.com网站上所有的汽车爬虫全部抓取下来。 import requests import json import csv from lxml import etree …

【HarmonyOS】综合应用-《校园通》

概念 本文结合之前的笔记文章知识点,做一个综合性的小应用。 创建一个ArkTS语言的鸿蒙项目,搭建首页面 其界面代码如下,该界面使用了垂直布局,相对布局,轮播布局,以及图片,文本等组件的综合运…

ubuntu22.04服务器docker-compose方式部署ldap服务

一:系统版本 二:部署环境 节点名称 IP 部署组件及版本 配置文件路径 机器CPU 机器内存 机器存储 Ldap 10.10.10.111 self-service-password:latest phpldapadmin:latest openldap:latest openldap:/data/openldap/config phpldapadmin&#x…

初识C++ · string的使用(1)

目录 1 STL简介 2 string类 2.1 构造 析构 拷贝 2.2 size length 2.3 [ ]的使用 2.4 迭代器 2.5 Push_Back和append 3 sort的使用 1 STL简介 STL是一个标准库,是C标准库的一个重要部分,那么什么是STL?STL是一个模板库,包…

Sass终极指南:从基础到高级,打造高效、可维护的CSS代码!

在现代网页开发中,CSS预处理器已经成为提高样式表维护性和可扩展性的重要工具。Sass(Syntactically Awesome Style Sheets)是其中最受欢迎的预处理器之一。本文将全面详细地介绍Sass,包括其基本介绍、主要作用、使用方法及注意事项…

2024年NOC大赛创客智慧(西瓜创客)Python复赛编程真题模拟试卷包含答案

NOC复赛python模拟题 1.编写一个程序,提示用户输人一个矩形的长度和宽度,并输出其面积, 2.试计算在区间 1 到 n的所有整数中,数字x(0≤x≤9)共出现了多少次?例如在 1到11 中,即在 1,2,3.45,6.7,8.9,10,11 中,数字 1出现了 4 次.…

工程师工具箱系列(3)Arthas

文章目录 工程师工具箱系列(3)Arthas安装与准备Arthas插件使用场景查看某个变量值ognl方式调用Bean方法tt(TimeTunel)方式调用Bean的方法ognl调用带参数方法 资源总览 工程师工具箱系列(3)Arthas Java诊断利器 安装与准备 window…

大厂常见算法50题-两数相加

专栏持续更新50道算法题,都是大厂高频算法题,建议关注, 一起巧‘背’算法! 文章目录 题目解法总结 题目 解法 定义一个节点pre,用于初始化结果链表的头部,cur指向pre,它将在遍历过程中用于构建新的链表。初始化进位变…

微服务部署不迷茫:4大部署模式深度解析,轻松驾驭云原生时代

微服务部署最全详解(4种常见部署模式) 微服务多实例部署 每个微服务都独立部署在自己的运行环境中,这是微服务架构的核心思想。 一般会采用每个主机多个服务实例,如下所示: 这是一种传统的应用部署方法,每个服务实例在一个或多个…

腐烂的橘子BFS

题目: 腐烂的橘子 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子…