【大数据处理与可视化】七、时间序列分析

news/2024/7/5 2:00:41

【大数据处理与可视化】七、时间序列分析

  • 实验目的
  • 实验内容
  • 实验步骤
    • 一、案例——股票收盘价分析
      • 1、读取数据,并转换成DataFrame对象展示
      • 2、将“交易日期”一列设置为行索引
      • 3、根据数据中“收盘价”一列的数据绘制一张折线图,以了解近些年来收盘价格的趋势
      • 4、通过降采样来减少一些数据量,将采样的频率由每周改成每天
      • 5、利用ARIMA模型将非平稳序列转换为平稳序列
        • 用图表表示当前的ACF系数
        • 用图表表示当前的PACF系数
        • 通过差分算法,将将非平稳序列转换为平稳序列
      • 6、使用时序图看一下ACF和PACF系数的变化
        • ACF系数
        • PACF系数
      • 7、绘制ARIMA模型
      • 8、使用2018年1月至2月的五粮液股票数据,对刚刚拟合后的ARIMA模型进行测试
  • 实验小结


实验目的

       能够熟练运用时间序列分析和ARIMA模型对数据进行分析。


实验内容

       股票收盘价分析:本实验以“五粮液”股票数据为例,结合时间序列及ARIMA模型对股票收盘价进行分析;使用2003至2018年的股票数据,其中2014-2017年的数据为训练数据,通过对这些数据的训练,实现对2018年1月至3月的收盘价进行预测,并将预测的结果与爬到的真实股价进行绘制对比。


实验步骤

一、案例——股票收盘价分析

1、读取数据,并转换成DataFrame对象展示

代码:

import pandas as pd
import datetime
import matplotlib.pylab as plt

from statsmodels.tsa.arima_model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf,plot_pacf
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

data_path=open(r'D:\test.csv')
shares_info = pd.read_csv(data_path)
shares_info

截图:

在这里插入图片描述


2、将“交易日期”一列设置为行索引

代码:

dates = pd.to_datetime(shares_info['交易日期'].values,format='%Y%m%d')
shares_info = shares_info.set_index(dates)
shares_info

截图:

在这里插入图片描述


3、根据数据中“收盘价”一列的数据绘制一张折线图,以了解近些年来收盘价格的趋势

代码:

plt.plot(shares_info['收盘价'])
plt.title('股票每日收盘价')
plt.show()

截图:

在这里插入图片描述


4、通过降采样来减少一些数据量,将采样的频率由每周改成每天

代码:

shares_info_week = shares_info['收盘价'].resample('W-MON').mean()
train_data = shares_info_week['2014': '2017']
plt.plot(train_data)
plt.title('股票周收盘均值')
plt.show()

截图:

在这里插入图片描述


5、利用ARIMA模型将非平稳序列转换为平稳序列

用图表表示当前的ACF系数

代码:

acf = plot_acf(train_data,lags=20)
plt.title('股票指数的ACF')
plt.show()

截图:

在这里插入图片描述

用图表表示当前的PACF系数

代码:

pacf = plot_pacf(train_data,lags=20)
plt.title('股票指数的PACF')
plt.show()

截图:

在这里插入图片描述

通过差分算法,将将非平稳序列转换为平稳序列

代码:

train_diff=train_data.diff()
diff = train_diff.dropna()
plt.figure()
plt.plot(diff)
plt.title('一阶差分')
plt.show()

截图:

在这里插入图片描述


6、使用时序图看一下ACF和PACF系数的变化

ACF系数

代码:

acf_diff = plot_acf(diff,lags=20)
plt.title('一阶差分的ACF')
plt.show()

截图:

在这里插入图片描述

PACF系数

代码:

pacf_diff = plot_pacf(diff,lags=20)
plt.title('一阶差分的PACF')
plt.show()

截图:

在这里插入图片描述


7、绘制ARIMA模型

代码:

model = ARIMA(train_data, order =(1,1,1),freq = 'W-MON')
arima_result = model.fit()
arima_result.summary()

截图:

在这里插入图片描述


8、使用2018年1月至2月的五粮液股票数据,对刚刚拟合后的ARIMA模型进行测试

代码:

pred_vals = arima_result.predict('2018-01-01','2018-02-26',dynamic=True,typ='levels')
stock_forcast=pd.concat([shares_info_week,pred_vals],axis=1,keys=['original','predicted'])
plt.figure()
plt.plot(stock_forcast)
plt.title('真实值 vs 预测值')
plt.show()

截图:

在这里插入图片描述


实验小结

       通过本次实验,我能够熟练运用时间序列分析和ARIMA模型对数据进行分析。在实验过程中遇到了很多硬件或者是软件上的问题,请教老师,询问同学,上网查资料,都是解决这些问题的途径。最终将遇到的问题一一解决最终完成实验。
注意事项:
1、有疑问前,知识学习前,先用搜索。
2、熟读写基础知识,学得会不如学得牢。
3、选择交流平台,如QQ群,网站论坛等。
4、尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。


http://lihuaxi.xjx100.cn/news/1182107.html

相关文章

【Spring】— 映射文件

映射文件 映射文件是MyBatis框架中十分重要的文件。在映射文件中&#xff0c;<mapper>元素是映射文件的根元素&#xff0c;其他元素都是它的子元素。映射文件中的主要元素如下所示。 <mapper><!--映射查询语句&#xff0c;可自定义参数&#xff0c;返回结果集…

ViewPager+Fragment,Fragment中嵌套Fragment,嵌套的Fragment数据都加载到了第一个嵌套的Fragment

家人们呀&#xff01;谁能懂啊&#xff0c;我TM找了一周的问题&#xff0c;反复尝试了一周都没解决的问题&#xff0c;竟然是因为一句代码的问题。气死我啦&#xff01;&#xff01;&#xff01;&#xff01; 情况是这样的&#xff0c;我们项目临近上线&#xff0c;同事拿着手…

带你深入理解Android 中 UI 的刷新机制

Android中的UI刷新机制是指Android系统如何更新和绘制UI界面以响应用户的操作和数据变化。UI的刷新过程涉及到多个关键概念和组件&#xff0c;包括主线程、UI线程、消息循环、View树、View的测量和布局、绘制等。下面将详细解释Android中的UI刷新机制&#xff0c;并提供相应的代…

Spring 日志文件

日志 日志是程序的重要组成部分,日志可以:a.记录错误日志和警告日志(发现和定位问题)b.记录用户登录日志,方便分析用户是正常登录还是恶意破解用户c.记录系统的操作日志,方便数据恢复和定位操作人d.记录程序的执行时间,方便为以后优化程序提供数据支持 日志使用 SpringBoot …

如何搭建自己的CentOS系统

CentOS是一个完全免费的操作系统&#xff0c;这对于开发人员来说非常有吸引力。他们可以使用CentOS来开发和测试应用程序&#xff0c;而不需要支付任何费用。那么作为程序员如果搭建自己的CentOS服务器呢&#xff1f; 搭建自己的CentOS系统需要以下步骤&#xff1a; 1、下载Ce…

【VPR】 Command-line - vpr的命令行选项(一)

目录 一、基本用法 二、命令行详解 2.1、阶段选项&#xff08;Stage Options&#xff09; 2.2、图形选项&#xff08;Graphics Options &#xff09; 2.3、常规选项&#xff08;General Options&#xff09; 2.4、文件名选项&#xff08;Filename Options &#xff09; …

Python3,使用openpyxl进行excel数据对比,反手一个赞。

openpyxl技能 1、引言2、代码实战2.1 安装2.2 代码实战2.2.1 思路2.2.2 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c;我最近在对搞数据对比&#xff0c;你有什么便捷的方法&#xff1f; 小鱼&#xff1a;斗胆问一句&#xff0c;数据量多少&#xff1f; 小屌丝…

首届中国元宇宙应用场景大赛成果发布暨河畔元宇宙论坛圆满落幕

5月26日下午&#xff0c;首届中国元宇宙应用场景大赛成果发布暨河畔元宇宙论坛在北京城市副中心圆满落幕。活动在通州区委、区政府指导下&#xff0c;由北京大数据协会元宇宙专业委员会主办&#xff0c;中国质量认证中心、绿色智能新经济产业联盟、中关村元宇宙产业发展联盟协办…