1.导入相关包,查看数据情况

import numpy as np
import pandas as pd
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = 'SimHei'
%matplotlib inlinedf = pd.read_csv('./RFM分析1.csv')
df.info()

输出:

可以看出这里的数据比较完整,没有缺失值不用清洗缺失值。
2.请洗数据
2.1将销售日期转换成datetime类型

df['销售日期'] = pd.to_datetime(df['销售日期'])
# 查看是否修改成功
df.info()

输出:

2.2 使用describe查看均值、最大、最小值情况

df.describe()

输出:

支付金额有负数。查看负数的数据有多少条。

df[df['销售金额'] < 0]


这里有6946条,相对于总数293751,数据比较小,直接当异常值来处理。这里直接获取销售金额大于0的数据来进行分析。

df = df[df['销售金额'] > 0]
# 重新看销售金额的最小值
df.describe()

输出:

2.3 设置销售日期为index

df.index = df['销售日期']
df.head()

输出:

3.利用ARMA模型进行预测
3.1 先查看现有的销售趋势

df_Month = df.resample('M').sum()
plt.figure(figsize=(18, 7), dpi=128)
df_Month['销售金额'].plot()

输出:

3.2 对数据进行训练

from statsmodels.tsa.arima_model import ARMA
from datetime import datetime
from itertools import product# 设置p阶,q阶范围
# product p,q的所有组合
# 设置最好的aic为无穷大
# 对范围内的p,q阶进行模型训练,得到最优模型
ps = range(0, 6)
qs = range(0, 6)
parameters = product(ps, qs)
parameters_list = list(parameters)best_aic = float('inf')
results = []
for param in parameters_list:try:model = ARMA(df_Month['销售金额'], order=(param[0], param[1])).fit()except ValueError:print("参数错误:", param)continueaic = model.aicif aic < best_aic:best_model = modelbest_aic = model.aicbest_param = paramresults.append([param, model.aic])
results_table = pd.DataFrame(results)
results_table.columns = ['parameters', 'aic']
print("最优模型", best_model.summary())

输出:
3.3 预测

# 先增加后几个月的时间日期,进行合并
date_list = [datetime(2014, 8, 31), datetime(2014, 9, 30), datetime(2014, 10, 31),datetime(2014, 11, 30), datetime(2014, 12, 31), datetime(2015, 1, 31)]
df_Month = df_Month[['销售金额']]
future = pd.DataFrame(index=date_list, columns= df_Month.columns)
df_Month = pd.concat([df_Month, future])
df_Month

输出:

进行预测,可视化

df_Month['forecast'] = best_model.predict(start=0, end=58)
plt.figure(figsize=(20, 7))
df_Month['销售金额'].plot(label='实际销售金额')
df_Month['forecast'].plot(color='r', ls='--', label='预测销售金额')
plt.legend()
plt.show()

Python实现ARMA模型相关推荐

  1. Python数据分析 ---- ARMA模型

    ARMA 模型简介 ARMA 模型是研究时间序列的重要方法,由 AR 模型与 MA 模型混合而成.总的来说,AR 模型(自回归模型)是通过分析研究历史数据对当前数据的影响进行建模.MA 模型(移动平均 ...

  2. 时间序列基础操作:使用python与eviews对AR与ARMA模型进行定阶与预报

    一般处理时间序列的基本过程: 几种基础时间序列模型: 目录 一.Python处理 1.1.step1:平稳性检验与白噪音检验 1.1.1平稳性检验:ADF检验 1.1.2差分修正: 1.1.3白噪音检 ...

  3. 时间序列分析ARMA模型原理及Python statsmodels实践(上)

    目录 1. 时间序列及相关基本概念 1.1. 时间序列分解 1.2. 时间平稳序列 1.3. 自相关与自相关函数(ACF) 1.4. 白噪声及Ljung-Box检验 1.4.1. 白噪声 1.4.2. ...

  4. 金融时间序列分析: 10. ARMA模型实例(R,Python)

    0. 目录 金融时间序列分析:9. ARMA自回归移动平均模型 金融时间序列分析:8. MA模型实例(Python) 金融时间序列分析:7. MA滑动平均模型 金融时间序列分析:6. AR模型实例 金 ...

  5. ARMA模型时间序列分析全流程(附python代码)

    ARMA模型建模流程 建模流程 1)平稳性检验 原始数据data经过清洗得到data_new,然后进行平稳性检验,非平稳数据无法采用ARMA模型进行预测,ADF检验可以用来确定数据的平稳性,这里导入的 ...

  6. arma模型平稳性和可逆性的条件_时间序列预测模型ARIMA实现

    前段时间整理了一个预测的基本思考框架和常见的方法,其中提到了ARIMA模型,在<大数据预测>那本书里,ARIMA是单独开辟一章讲的,比较复杂和难理解的一个模型,自己最近找了点资料粗浅学习了 ...

  7. .describe() python_Python实现ARMA模型

    1.导入相关包,查看数据情况 import numpy as np import pandas as pd import matplotlib.pyplot as plt plt.rcParams[' ...

  8. 大数据分析培训课程python时间序列ARIMAX模型

    什么是ARIMAX模型? 如果您已经阅读了有关用于估计时间序列数据的模型的系列大数据分析培训课程python时间序列ARIMAX模型教程,则您已经熟悉3种主要方法- 自回归,移动平均值和积分. 所有这 ...

  9. Python建立ARIMA模型

    Python建立ARIMA模型 ARIMA(p,d,q)模型:AR是自回归,p为自回归项:MA为移动平均,q为移动平均项数:d为时间序列成为平稳时所做的差分次数. 原理:将非平稳时间序列转化为平稳时间 ...

最新文章

  1. mysql 3列索引_mysql多列索引
  2. testid oracle vue,Vue 组件单元测试究竟测试什么?
  3. Javascript里使用Dom操作Xml
  4. 20190624 Oracle 表分析
  5. Maven学习总结(46)——Maven跳过单元测试的两种方法及其区别(-Dmaven.test.skip=true与-DskipTests)
  6. 【转】vue项目重构技术要点和总结
  7. [wp7游戏]wp7~~~连连看 游戏~~集合贴~~
  8. 2020.2.22基于L大源码的Lede x86 软路由精简版固件
  9. 佛山科目三仙塘中腾考场-考试要点(已经有新考场,这是旧考场经验)
  10. 格局打开,外贸牛人的价格谈判策略!
  11. 车载通信与导航(七):D2D通信详解
  12. import dlib,报错:ImportError: libcublas.so.10.0: cannot open shared object file: No such file or direc
  13. hadoop3.x\2.x常用端口,和常用配置文件
  14. 杨辉三角python输出
  15. 程序员做什么副业最轻松最赚钱?
  16. Oracle clob怎么存储超过4000长度的数据,你了解吗
  17. 阿里又一员猛将出走江湖?原钉钉CEO“无招”将离职创业,新公司被投资方疯抢!阿里辟谣:人还没走!...
  18. 浅显易懂了解JavaScript回调函数
  19. HNOI2016 游记
  20. win10输入法没有选字框

热门文章

  1. 混合式步进电机控制器开源系列(一)PCB原理图设计
  2. goods购物表MySQL的代码_第一节:数据库及表
  3. 【HTML】HTML网页设计----模仿汉服前端设计
  4. 解决gpedit问题
  5. 【XHashx运维笔记】1+X初级B卷
  6. python GDAL遥感影像创建缩略图
  7. Matlab文件列表实现自然排序的方法排序
  8. 反向传播算法的理论基础,神经网络反向传播算法
  9. @Transactional的介绍和使用
  10. tensorflow高阶教程:tf.dynamic_rnn