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

news/2024/11/25 10:59:48/

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

  • 实验目的
  • 实验内容
  • 实验步骤
    • 一、案例——股票收盘价分析
      • 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 pltfrom 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'] = Falsedata_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://www.ppmy.cn/news/101706.html

相关文章

Packet Tracer - 配置区域策略防火墙

Packet Tracer - 配置区域策略防火墙 拓扑 地址表 设备 接口 IP地址 子网掩码 默认网关 交换机端口 R1 F0/1 192.168.1.1 255.255.255.0 N/A S1 F0/2 S0/3/0 (DCE) 10.1.1.1 255.255.255.252 N/A N/A R2 S0/3/0 10.1.1.2 255.255.255.252 N/A N/A S0/3…

为什么pnpm比npm、yarn使用更好

performant npm ,意味高性能的 npm。pnpm由 npm/yarn 衍生而来,解决了 npm/yarn 内部潜在的bug,极大的优化了性能,扩展了使用场景。被誉为"最先进的包管理工具"。 我们按照包管理工具的发展历史开始讲起: n…

ELFK日志分析系统并使用Filter对日志数据进行处理

目录 一、 FilebeatELK 部署Filebeat 节点上操作 二、Filtergrok 正则捕获插件内置正则表达式调用自定义表达式调用 mutate 数据修改插件multiline 多行合并插件date 时间处理插件 一、 FilebeatELK 部署 Node1节点(2C/4G):node1/192.168.15…

腾讯云服务器常用端口号大全以及端口开启方法

腾讯云服务器常用端口号如80、21、22、8080等端口,出于安全考虑一些常用端口默认是关闭的,腾讯云服务器端口如何打开呢?云服务器CVM在安全组中开启端口,轻量应用服务器在防火墙中可以打开端口,腾讯云百科来详细说下腾讯…

【gstreamer】入门介绍

概述 GStreamer是一个基于流媒体的框架,是一个开放源代码的多媒体框架,用于创建音频和视频处理应用程序。它是一个运行在多个操作系统上的跨平台框架,支持多种不同的多媒体格式。 GStreamer框架的核心是基于插件的体系结构,插件…

【现实生活实际应用】【公交车换乘算法——算法用在公交车】【单源最短路-如何根据图意构建图,最重要】最优乘车【sstream输入】

问题出现了 其实我们构图的时候, 我们已经知道1 - 3 - 5 那么我们直接让1 连到 3 和 5 表示直达 如果出现另一路 4 7 3 6 则3最终连接的是 5 和 6 从1开始,先走到了 3 和 5 然后bfs宽搜到3(此时就表示换乘了,因为1直达的已经都遍历…

怎么用C#实现和Java的SHA1PRNG 256位互通的加解密?

在Java中使用AES进行加解密的时候,有时候会使用256位的key且摘要算法使用SHA1PRNG生成32字节(256位)的密钥。但是如果使用256位,那么在C#中就不能解密了。经过分析C#中的SHA1CryptoServiceProvider生成的key摘要只有160位&#xf…

让我来教你加以系统应该怎么用?

在这个充满机遇与挑战的时代,一位普通的投资者是如何通过一款交易系统,逐步成长为稳健的投资者的呢?接下来,让我们一起来看看他的故事。 一开始,这位投资者并不具备任何投资经验,但他却在心中埋下了渴望成…