使用Python进行时间序列分析的8种图

news2024/11/23 15:38:30

时间序列数据

时间序列数据是按时间顺序以固定的时间间隔排列的观测值的集合。每个观察对应于特定的时间点,并且数据可以以各种频率(例如,每日、每月、每年)。这种类型的数据在许多领域都非常重要,包括金融,经济,气候科学等,因为它有助于通过分析时间序列数据来掌握潜在模式,发现趋势和发现季节性波动。

什么是时间序列分析?

用于评估时间序列数据以确定相关统计和其他数据属性的技术被称为时间序列分析。任何具有周期性模式的时间序列,包括金融市场、天气和社交媒体统计数据,都可能受到它的影响。时间序列分析的主要目标是研究有关市场趋势和经济周期的关键思想。

可视化在从时间序列数据中获取有见地的信息的过程中至关重要,使我们能够理解复杂的关系并做出明智的决策。

本文介绍了几种类型的图,这些图将帮助您使用Python进行时间序列分析,并使用免费访问的数据集提供了详细的示例。

数据集描述

数据集: https://github.com/jbrownlee/Datasets/blob/master/monthly-sunspots.csv

什么是太阳黑子?

太阳黑子是太阳表面的区域,被称为光球层,磁场集中,导致表面温度相对于周围环境降低。太阳复杂的磁活动是产生这些黑色区域的原因。
太阳黑子已经被观察和记录了很多年,一些最早的记录来自古代文明。了解太阳活动,空间天气及其对地球气候和通信系统的可能影响,极大地帮助了他们的研究。科学家们仍在研究太阳黑子,以更多地了解太阳磁场的动态以及它如何影响我们的太阳系。

数据集变量

该数据集由两列组成-“Month”和“Sunspots”,从1749年到1983年。它基本上描述了这个数据集中记录的每个月在太阳上看到的太阳黑子的数量。

导入必要的库

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf

导入数据集

# Load the Monthly Sunspots dataset
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/monthly-sunspots.csv"
data = pd.read_csv(url, parse_dates=['Month'], index_col='Month')
print(data)

输出

            Sunspots
Month               
1749-01-01      58.0
1749-02-01      62.6
1749-03-01      70.0
1749-04-01      55.7
1749-05-01      85.0
...              ...
1983-08-01      71.8
1983-09-01      50.3
1983-10-01      55.8
1983-11-01      33.3
1983-12-01      33.4
[2820 rows x 1 columns]

现在,我们可以开始理解各种类型的图以及它们在Python中的实现。

1. 时间图

时间序列数据的最基本表示之一是时间图,有时称为时间序列图。x轴是时间,y轴是相关变量,它按时间顺序显示数据点。

在这项研究中使用的时间图显示了整个完整的数据集期间,从1749年到1983年的太阳黑子数量的每月波动。通过查看时间图,我们可以了解更多关于太阳黑子数据的总体趋势、季节趋势以及任何潜在的异常值或异常情况。

下面是时间图的代码示例

# Time plot
plt.figure(figsize=(7, 5))
plt.plot(data.index, data['Sunspots'], marker='o', linestyle='-', markersize=5)
plt.xlabel('Date')
plt.ylabel('Number of Sunspots')
plt.title('Monthly Sunspots Time Plot')
plt.grid(True)
plt.show()

输出
在这里插入图片描述
在整个数据集期间,时间图显示太阳黑子数量的月度变化。在这里,太阳黑子数量最多的时候是在1960年左右,而最少的时候是在1800年左右。

2. 线图

用直线链接数据点的简单可视化称为线图。提供时间序列数据的连续视图,强调变量随时间的趋势和变化。它主要用于跟踪数据中的长期模式。

在我们的研究中,我们采用了折线图来显示太阳黑子数量的长期趋势。这使我们能够确定太阳黑子活动的总体趋势,以及太阳黑子的数量是否随着时间的推移而上升,下降或保持不变。

让我们现在用python绘制它

# Line plot
import matplotlib.pyplot as plt
plt.figure(figsize=(7, 5))
plt.plot(data)
plt.xlabel('Date')
plt.ylabel('Number of Sunspots')
plt.title('Monthly Sunspots Line Plot')
plt.grid(True)
plt.show()

输出
在这里插入图片描述
现在,时间图和线图看起来几乎相同,但重要的是要注意,线图是显示两个连续变量之间关系的图的通用术语,没有任何特定的时间重点。
另一方面,时间图是线图的一种特殊形式,它专注于可视化变量如何随时间变化,时间是x轴变量。时间图在处理时间序列数据时特别有用,其中观测按时间顺序排列并以固定的时间间隔记录。

3. 季节图

季节图将时间序列数据分解为季节分量,以说明在预定时间间隔(例如年度或月度周期)内重复出现的模式。它使我们能够识别太阳黑子活动的重复趋势,例如全年活动的变化。

下面是季节图的代码示例

# Seasonal plot
plt.figure(figsize=(7, 5))
sns.lineplot(x=data.index.month, y=data['Sunspots'], ci=None)
plt.xlabel('Month')
plt.ylabel('Number of Sunspots')
plt.title('Seasonal Plot')
plt.xticks(range(1, 13), labels=[
		'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'])
plt.grid(True)
plt.show()

输出
在这里插入图片描述
从这个季节图中,我们可以了解更多关于太阳活动的季节性,它揭示了太阳黑子活动倾向于较高或较低的月份。

4. 直方图和密度图

密度图被定义为用于可视化数据分布并估计连续随机变量的概率密度函数(PDF)的图形表示。它基本上是直方图的平滑版本,提供表示底层数据分布的连续曲线。当处理大型数据集或需要平滑、连续的数据表示来揭示值在整个时间序列中的分布时,这些图是合适的。

下面是直方图和密度图的代码示例

# Histogram and Density Plot
plt.figure(figsize=(7, 5))
sns.histplot(data['Sunspots'], kde=True)
plt.xlabel('Number of Sunspots')
plt.ylabel('Frequency')
plt.title('Histogram and Density Plot')
plt.grid(True)
plt.show()

输出
在这里插入图片描述
密度图和直方图显示了太阳黑子数量的频率分布,这有助于我们理解太阳黑子分布的形式及其集中趋势。

5. 自相关图

自相关图,也称为相关图,是一种时间序列分析工具,用于显示时间序列在不同滞后下与自身的自相关性。通过自相关来测量数据点与其在各种时间滞后处的先前观测值之间的联系。它基本上表示时间序列与其自身滞后值之间的相关性。图主要用于识别数据中的季节滞后。

现在让我们使用Python绘制一个自相关图

# Autocorrelation Plot
plt.figure(figsize=(7,5))
plot_acf(data['Sunspots'], lags=50)
plt.xlabel('Lags')
plt.ylabel('Autocorrelation')
plt.title('Autocorrelation Plot')
plt.grid(True)
plt.show()

输出
在这里插入图片描述
自相关图显示了不同滞后的相关性,这对于理解太阳黑子活动的季节性模式很有用。一个重大的自相关在特定的延迟表明,太阳黑子活动可能遵循每年的模式。

6. 偏自相关函数(PACF)图

偏自相关函数(PACF)图是时间序列分析中用于确定时间序列的自回归(AR)阶的图形工具。在考虑所有中间延迟的影响的同时,它显示了每个延迟对时间序列的当前值的直接影响。基本上,它检查数据点与其先前观测值之间的相关性,而不考虑干预时间步长的影响。

以下是偏自相关函数(PACF)图的代码示例

# PACF plot
plt.figure(figsize=(7, 5))
plot_pacf(data['Sunspots'], lags=50)
plt.xlabel('Lags')
plt.ylabel('Partial Autocorrelation')
plt.title('Partial Autocorrelation Function (PACF) Plot')
plt.grid(True)
plt.show()

输出
在这里插入图片描述
在我们的方法中,滞后观测的数量与当前的太阳黑子计数的实质性影响确定使用的PACF图。PACF帮助选择AR模型对太阳黑子活动的预测顺序。

7. 极坐标图

极坐标图是数据可视化图,其中数据点以圆形图案布置。围绕圆的角度和距中心的径向距离用于表示各种变量或数据属性。这些主要用于可视化数据集中的季节模式。

下面是极坐标图的代码示例

# Extracting the month and year from the index of the above dataset "Monthly Sunspots"
data['Month_Num'] = data.index.month

# Grouping the data by month, calculating the average number of sunspots for each month
monthly_average = data.groupby('Month_Num')['Sunspots'].mean()

# Polar Plot theta (angle) and radii (length) settings
theta = np.linspace(0, 2 * np.pi, len(monthly_average))
radii = monthly_average.values

# Polar Plot
plt.figure(figsize=(7, 5))
plt.polar(theta, radii)
plt.title('Polar Plot of Monthly Average Sunspots')
plt.xticks(theta, ['Jan', 'Feb', 'Mar', 'Apr', 'May',
				'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'])

# Set y-axis limit to accommodate the data
plt.ylim(0, radii.max() + 10)
plt.show()

输出
在这里插入图片描述
在这种特殊情况下,极坐标图显示了每个月太阳黑子的平均数量。距中心的径向距离反映了每个月的太阳黑子的平均数量,而圆内的角位置表示每个月(例如,一月、二月、三月等)。它揭示了数据中存在的任何季节性趋势,并使我们能够看到太阳黑子活动年度周期中的周期性模式。
月平均太阳黑子视图在极坐标图中显示得非常迷人,它还揭示了全年的周期性趋势。

8. 移动平均图

在时间序列分析中,移动平均图是一种流行的数据可视化方法,用于发现数据中的趋势和模式。其主要目标是通过确定连续数据点的特定窗口的平均值来消除短期波动并揭示数据的长期趋势。

对窗口内的数据点进行平均,并将所得值显示在图表上以生成移动平均值图。当移动平均线位于原始数据图上时,更容易发现和比较趋势和季节性模式。

下面是移动平均线图的代码示例

# Moving Average Plot
plt.figure(figsize=(7, 5))
values = data['Sunspots']

# 7-day moving average
rolling_mean = values.rolling(window=7).mean()
plt.plot(values, label='Original')
plt.plot(rolling_mean, label='7-day Moving Average', color='red')
plt.xlabel('Date')
plt.ylabel('Value')
plt.title('Moving Average Plot')
plt.legend()
plt.grid(True)
plt.show()

输出
在这里插入图片描述
我们在这里绘制了一个7天移动平均线。我们知道,移动平均是一种通过确定后续数据点的预定窗口的平均值来平滑数据的技术。用于求平均的数据点的数量取决于窗口大小,通常称为移动平均周期。这种方法涉及在七天的时间内平均初始太阳黑子数据。

总结

通过利用这些各种图表和数据可视化技术,我们可以全面了解“每月太阳黑子”数据集,识别模式,并提取有关几个世纪以来太阳活动的宝贵见解。

作为这项研究的结果,您现在拥有将这些技术应用于各种部门和行业的时间序列数据集所需的知识。时间序列分析提供了重要的工具,可以在任何需要序列数据的领域(包括经济学,金融,气候研究和其他领域)获得有见地的见解并做出数据驱动的决策。通过采用这些方法,我们有能力利用时间相关的数据,并利用其预测潜力来解决现实世界的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux+c语言杂记(二)

一、在 Ubuntu 20.04 上安装 GCC 默认的 Ubuntu 软件源包含了一个软件包组,名称为 “build-essential”,它包含了 GNU 编辑器集合,GNU 调试器,和其他编译软件所必需的开发库和工具。 想要安装开发工具软件包,以 拥有 sudo 权限用…

新一代最强开源UI自动化测试神器Playwright(Java版)(对话框处理)

🎭Playwright让网页对话框🌐💬处理变得更加快捷!网页对话框是在网页上出现的常见弹窗,包括Alert、Confirm和Prompt等。这些对话框通常需要用户输入信息或进行某些选择,但是在自动化测试中处理它们可能会很棘…

双周赛113(枚举、分类讨论 + 二分查找、枚举值域两数之和、换根DP)

文章目录 双周赛113[2855. 使数组成为递增数组的最少右移次数](https://leetcode.cn/problems/minimum-right-shifts-to-sort-the-array/)暴力枚举贪心 O(n) [2856. 删除数对后的最小数组长度](https://leetcode.cn/problems/minimum-array-length-after-pair-removals/)分类讨…

[MAUI]实现动态拖拽排序网格

文章目录 创建页面元素创建可绑定对象创建绑定服务类拖拽(Drag)拖拽悬停,经过(DragOver)释放(Drop) 限流(Throttle)和防抖(Debounce)项目地址 上一章我们使用拖放(drag-drop)手势识别实现了可拖…

TCP/IP协议栈各层涉及到的协议

21/tcp FTP 文件传输协议 22/tcp SSH 安全登录、文件传送(SCP)和端口重定向 23/tcp Telnet 远程连接 80/tcp HTTP 443/tcp HTTPS 计算机各层网络协议 五层:应用层: (典型设备:应用程序,如FTP,SMTP ,HTTP) DHCP(Dynamic Host…

Pikachu Burte Force(暴力破解)

一、Burte Force(暴力破解)概述 ​ “暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高…

RFID与人工智能怎么融合,RFID与人工智能融合的应用

随着物联网技术的不断发展,现实世界与数字世界的桥梁已经被打通。物联网通过各种传感器,将现实世界中的光、电、热等信号转化为有价值的数据。这些数据可以通过RFID技术进行自动收集和传输,然后经由人工智能算法进行分析、建模和预测&#xf…

uniapp cli创建 vue3 + typeScript项目 配置eslint prettier husky

1 命令创建项目 npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project2 下载依赖 npm install3 填写appid 4 运行项目并且微信开发工具打开 npm run dev:mp-weixin5 安装 vscode 插件 安装 **Vue Language Features (Volar)** :Vue3 语法提示插件 安装 *…

伦敦银一手是多少?

伦敦银是以国际现货白银价格为跟踪对象的电子合约交易,无论投资者通过什么地方的平台进入市场,执行的都是统一国际的标准,一手标准的合约所代表的就是5000盎司的白银,如果以国内投资者比较熟悉的单位计算,那约相当于15…

http客户端Feign使用

一、RestTemplate方式调用存在的问题 先来看我们以前利用RestTemplate发起远程调用的代码: String url "http://userservice/user/" order.getUserId(); User user restTemplate.getForObject(url, User.class);存在下面的问题: 代码可读…

Mosh Java课程自学(一)

目录 一、前言 二、全局介绍 三、Types 一、前言 首先推荐一下B站上转载的Mosh讲Java课程,当然,建议有一定基础并且英文水平尚可的同学学习,否则你可能会被搞得很累并逐渐失去对编程的兴趣。 Mosh 【JAVA终极教程】中英文字幕 高清完整版…

口袋参谋:如何高效一键下载真实买家秀?

​在淘宝天猫上,即使卖一支笔都有上万个宝贝竞争,所有卖家拼的就是权重带来的曝光度,能展示给买家多少,自己收获多少流量。 如何用自己的优势将流量访客转化为顾客,提升店铺的转化率。而买家秀,就是为此而生…

Java常用类之 String、StringBuffer、StringBuilder

Java常用类 文章目录 一、字符串相关的类1.1、String的 不可变性1.2、String不同实例化方式的对比1.3、String不同拼接操作的对比1.4、String的常用方法1.5、String类与其他结构之间的转换1.5.1、String 与基本数据类型、包装类之间的转换1.5.2、String 与char[]的转换1.5.3、…

ipad可以使用其他品牌的手写笔吗?开学平价电容笔推荐

新学期已经来临,相信不少同学已经开始着手筹备新学期的该准备什么了,毕竟原装的苹果Pencil,功能强大,但价格昂贵,一般人根本买不起。那么,有没有像苹果原装那样的电容笔呢?当然是有的。国产的平…

长安链上线可视化敏捷测试工具v1.0版本

开发者对区块链底层平台进行初步的了解后,一项经常会涉及到的工作是对平台进行测试以考量其性能及稳定性是否符合自身使用需求。长安链推出了可视化UI操作界面的区块链敏捷测试工具v1.0版本,当前版本可对内置合约进行压测并生成网络拓扑图以验证组网方式…

免费开箱即用微鳄售后工单管理系统

编者按:本文介绍基于天翎MyApps低代码平台开发的微鳄售后工单管理系统, 引入低代码平台可以帮助企业快速搭建和部署售后工单管理系统, 以工作流作为支撑,在线完成各环节数据审批,解决售后 工单 服务的全生命周期过程管…

《2023中国氢能源行业分析报告》丨附下载_三叠云

✦ ✦✦ ✦✦ ✦✦ ✦ 1. 国内氢能政策梳理 直接涉及氢能政策:1)21年以来,发布国家级10个、省级83个、 市县级252个;2)涉及发展规划占比45%、财政支持占比 20%、项目支持占比17%、管理办法占比16%、 氢能安全和标准占…

公私钥非对称加密 生成和验证JSON Web Token (JWT)

前言 这是我在这个网站整理的笔记,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 公私钥非对称加密 生成和验证JSON Web Token 什么是JSON Web Token (JWT)Java程序中生成和验证JWT代码解析 什么是JSON Web Token (JWT) JSON Web Tok…

【C++】泛型算法(二)泛型指针Iterator(迭代器)

迭代器iterator定义 迭代器是一种检查容器内元素并遍历元素的数据类型;迭代器提供一个对容器对象或者string对象的访问方法,并定义了容器范围;迭代器的使用可以提高编程的效率。 其定义应该提供: 迭代对象(某个容器&a…

拆贡献算总和(抓住双射)+竞赛图与连通分量相关计数:arc163_d

https://atcoder.jp/contests/arc163/tasks/arc163_d 首先竞赛图有个性质: 然后有了这个性质,我们就可以考虑计数题的经典套路,拆贡献算总和。 考虑假如我们成功划分成两个集合 A , B A,B A,B,其中一个可以为空(我们…