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


实验目的

       能够熟练运用时间序列分析和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、尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。

  • 10
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Python是一种通用的高级编程语言,非常适合数据分析和可。Python的强大之处在于它的开源库,这些库使得数据处理和可变得简单。以下是Python数据分析和可的一些常用库: 1. NumPy:NumPy是Python中的一个常用库,它提供了用于处理数组和矩阵的高效方法。NumPy中的许多函数都是使用C语言编写的,因此它们的执行速度非常快。这使得NumPy成为Python中进行科学计算的主要库之一。 2. Pandas:Pandas是Python中用于数据分析的另一个常用库。它提供了数据结构和数据分析工具,使得数据处理变得非常简单。Pandas可以处理各种类型的数据,包括表格数据、时间序列数据和统计数据。 3. Matplotlib:Matplotlib是Python中的一个绘图库,它可以创建各种类型的图形,包括线图、散点图、柱状图等。Matplotlib非常灵活,可以根据需要进行定制,因此是Python中绘制数据可图形的主要工具之一。 4. Seaborn:Seaborn是一个基于Matplotlib的高级数据可库。它提供了许多高级的绘图功能,包括统计图、热图、分类图等。使用Seaborn可以轻松地创建复杂的数据可图形。 5. Plotly:Plotly是一个交互式的数据可库,可以创建各种类型的图形,包括散点图、线图、面积图等。Plotly可以生成动态的图形,这使得数据可更具吸引力和可操作性。 除此之外,还有许多其他的Python库可以用于数据分析和可,如SciPy、Scikit-learn、TensorFlow等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慢热型网友.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值