首页 > 编程语言 >用Python实现时间序列模型实战——Day1:时间序列的基本概念

用Python实现时间序列模型实战——Day1:时间序列的基本概念

时间:2024-08-27 15:55:03浏览次数:16  
标签:plt 季节性 Python 数据 Day1 时间 序列 data

一、学习内容

1. 时间序列数据的定义与特点

定义

  • 时间序列数据是一组按时间顺序排列的观测值。时间序列的每个观测值都与特定时间点相关联。例如,气温每天的记录、股票每日的收盘价等。

特点

  • 时间依赖性:时间序列数据的一个基本特点是当前数据点可能依赖于之前的一个或多个数据点。这种依赖性可以用来进行预测。
  • 趋势:数据可能表现出随时间的长期上升或下降趋势。例如,随着经济发展,GDP 一般会显示上升趋势。
  • 季节性:数据在特定时间周期内反复出现的模式。季节性常见于许多现实世界的数据中,如每年的某些月份销售额上升。
  • 周期性:周期性波动与季节性相似,但周期更长且可能不固定,如经济周期。
  • 随机性:数据中难以解释的波动,可以被视为噪声,可能由随机因素引起。

2. 时间序列的类型

平稳时间序列

  • 平稳性是时间序列分析中的一个重要概念。一个时间序列被称为平稳的,如果它的统计性质(如均值、方差、自相关)随着时间保持恒定。平稳时间序列没有趋势和季节性,其波动性是恒定的。
  • 判断方法
    • 自相关函数 (ACF) 和偏自相关函数 (PACF) 的图可以帮助判断时间序列的平稳性。
    • 平稳性检验:如 ADF(Augmented Dickey-Fuller)检验。

非平稳时间序列

  • 非平稳时间序列的统计性质随着时间变化,例如,序列中存在明显的趋势、季节性或周期性。对于非平稳时间序列,常常需要通过差分、去趋势、去季节性等方法将其转化为平稳序列。

3. 基本术语

  • 趋势:数据在较长时间范围内的总体变化方向。例如,社会总消费水平随时间上升。
  • 季节性:在特定周期内数据表现出的反复波动模式,通常与自然或人为的季节性因素有关。例如,零售业的销售额在节假日期间会显著增加。
  • 周期性:类似于季节性,但周期性波动的周期较长,且可能不固定。例如,经济周期的波动通常不定期发生。
  • 随机性:难以解释的波动,通常来源于不可预测的外部因素。

4. 时间序列的可视化与初步分析

可视化的重要性

  • 可视化是时间序列分析的第一步,通过图表,我们可以直观地观察到数据的趋势、季节性、周期性和随机性。

如何进行可视化

  • 使用 pandasmatplotlib 进行可视化,可以帮助我们识别时间序列中的模式并初步分析其结构。

二、实战案例

1. 数据加载与初步查看

import pandas as pd
import matplotlib.pyplot as plt

# 加载时间序列数据集
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/airline-passengers.csv"
data = pd.read_csv(url, parse_dates=['Month'], index_col='Month')

# 查看数据前几行
print("数据集的前几行:")
print(data.head())

运行结果:

数据集的前几行:
            Passengers
Month                 
1949-01-01         112
1949-02-01         118
1949-03-01         132
1949-04-01         129
1949-05-01         121

 程序解释:

  • 使用 pandas.read_csv 方法加载航空乘客数据集,并将 Month 列解析为日期格式并设为索引。然后使用 data.head() 查看前几行数据,以确认数据加载成功。
  • 该数据集记录了 1949 年 1 月至 1960 年 12 月的航空公司乘客数量。

2. 时间序列的初步可视化

# 绘制时间序列图
plt.figure(figsize=(12, 6))
plt.plot(data['Passengers'], color='blue', linewidth=2)
plt.title('Monthly Number of Airline Passengers (1949-1960)')
plt.xlabel('Date')
plt.ylabel('Number of Passengers')
plt.grid(True)
plt.show()

运行结果:

f94318d941d24bb0ad6c02d9b8603847.png

  程序解释:

  • 通过 matplotlibplot 函数绘制时间序列图,观察乘客数量随时间的变化。
  • 这一步帮助我们初步观察数据的趋势、季节性和随机波动。

3. 数据的描述性统计

# 检查数据的描述统计
print("\n数据的描述统计:")
print(data.describe())

 运行结果:

数据的描述统计:
       Passengers
count  144.000000
mean   280.298611
std    119.966317
min    104.000000
25%    180.000000
50%    265.500000
75%    360.500000
max    622.000000

程序解释: 

  • 使用 describe() 函数查看数据的描述性统计信息,如均值、标准差、最小值、最大值等,帮助我们了解数据的分布情况。

4. 年度趋势的可视化

# 可视化各个年份的数据趋势
data['Year'] = data.index.year
plt.figure(figsize=(12, 6))
for year in data['Year'].unique():
    yearly_data = data[data['Year'] == year]
    plt.plot(yearly_data.index.month, yearly_data['Passengers'], label=str(year))

plt.title('Yearly Trends in Airline Passengers')
plt.xlabel('Month')
plt.ylabel('Number of Passengers')
plt.legend()
plt.grid(True)
plt.show()

 运行结果:

3af80dcd794f44a3a1d8d163e37008e0.png

程序解释: 

  • 将数据按年份进行分割,并绘制每年的月度乘客数量趋势。这样可以直观地比较每一年之间的季节性变化和年度增长趋势。

三、结果分析

1. 趋势

  • 从时间序列图可以看出,航空乘客数量呈现出明显的上升趋势。这意味着随着时间的推移,航空旅行变得越来越普及。

2. 季节性

  • 在每年的乘客数量中,可以清晰地观察到季节性波动。例如,乘客数量在年中某些月份(如夏季)达到峰值,而在冬季通常会有下降。这表明航空旅行具有明显的季节性。

3. 随机性

  • 尽管存在趋势和季节性,但数据中也包含了一些随机波动,这可能是由于外部因素或数据本身的随机性导致的。

4. 年度分析

  • 年度趋势图显示,不同年份的乘客数量趋势基本一致,但随着时间推移,各年份的乘客数量逐渐增加。这种逐年增长的趋势反映了航空行业的扩展和经济的发展。

通过这些详细的分析和可视化,我们能够更好地理解时间序列数据的基本特征。这为后续更深入的时间序列分析和建模奠定了坚实的基础。

 

标签:plt,季节性,Python,数据,Day1,时间,序列,data
From: https://blog.csdn.net/qq_41698317/article/details/141572097

相关文章

  • 将Python脚本打包为exe
    将Python脚本打包为exe一、背景想要在没有Python环境的PC上面跑Python脚本,想要在没有pycharm环境下将Python打包为exe文件。二、步骤1、安装pyinstallerpipinstallpyinstaller注:可能需要魔法。2、打包命令pyinstaller-F-wxxx.py注:参数定义-h该模块的help信......
  • [开题]flask框架信息安全知识学习微信小程序10fhc(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在数字化时代,信息安全已成为社会经济发展的重要基石。随着移动互联网的普及,微信小程序作为一种轻量级的应用形态,迅速渗透到人们的日常生活......
  • [开题]flask框架医院挂号系统8n66p9(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗需求的日益增长,医院挂号系统作为患者就医的第一道门槛,其效率与便捷性直接影响到患者的就医体验和医院的运营效率。传统的人工挂号......
  • [开题]flask框架医院门诊预约挂号系统aj4p09(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗需求的持续增长和患者就医意识的提升,传统的医院门诊挂号方式已难以满足患者高效、便捷的就医需求。患者往往需要提前到医院排队等......
  • [开题]flask框架医院设备管理系统1704r9(程序+论文+python)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着医疗技术的飞速发展,医院设备日益增多且种类繁杂,传统的设备管理方式已难以满足现代医院高效运营的需求。设备管理涉及设备采购、领用、......
  • 【Python安全】demo1:模拟木马传播行为(谨慎使用)
    原创蓝胖子之家代码主要功能是将自身复制到系统目录,并将其写入注册表以实现开机启动。它还设置了一个定时器,用于定期执行一些操作。该程序还监听设备的插拔事件,并在可移动驱动器插入时将自身复制到驱动器上。具体来说,代码中的kill_process函数用于终止指定名称的进程。wnd_pr......
  • python如何进行sha1withrsa
    呜呜被坑了。`importbase64fromCrypto.HashimportSHA1fromCrypto.PublicKeyimportRSAfromCrypto.SignatureimportPKCS1_v1_5defget_sign():private_key='''MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALt0f8OlkIYt8R3BjGzQ5z+lNAPvdog/......
  • Python-解三元一次方程(Part.2)
    一、需要解的方程组为:x+y+z=26x-y=12x-y+z=18 二、下面进入代码实现:1、导入Sympy库中的符号、方程和求解函数fromsympyimportsymbols,Eq,solve 2、定义变量x,y,z=symbols('xyz') 3、定义方程组#方程1:x+y+z=26eq1=Eq(......
  • 乘法|python矩阵基本运算(学习笔记二)
    在前述文章中,我们已经知道,python通过使用numpy模块,创建矩阵形数组至少可以采用两种方法。也即,通过array和matrix子模块分别创建,详情请参考以下链接。https://blog.csdn.net/weixin_44855046/article/details/141564179?spm=1001.2014.3001.5502进一步,上述链接指向文章也通过测......
  • 24年最新最详细Python安装教程,附安装包!感觉收藏!
      Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,......