1.导入相关包,查看数据情况import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = 'SimHei'

%matplotlib inline

df = 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 设置销售日期为indexdf.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)

continue

aic = model.aic

if aic < best_aic:

best_model = model

best_aic = model.aic

best_param = param

results.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_Python实现ARMA模型相关推荐

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

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

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

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

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

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

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

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

  5. Python实现ARMA模型

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

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

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

  7. python arma_Python ARIMA

    以前都是用SPSS/EVIEWS等来做的,现在用Python来搞搞看,前后弄了一个星期,总算基本走通了. 基础库: pandas,numpy,scipy,matplotlib,statsmodels ...

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

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

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

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

  10. 基于ARMA模型的国内生产总值时间序列预测研究

    tushare ID:505144 按照[时间序列分析]ARMA预测GDP的python实现 - 知乎实现 基于ARMA模型对国内生产总值进行预测研究,首先对数据进行平稳化处理,然后识别与建立模型,根 ...

最新文章

  1. 要哭了,模拟器键盘一直不显示
  2. 皮一皮:是亲爹的操作 ,没错...
  3. 三菱fb功能块手册中文_技成周报33期 | 三菱、西门子全系列这34个问题值得一看!...
  4. 【原创】有关Silverlight中“DataGrid中级联动态绑定父/子ComboBox ”的示例。
  5. 赋能尖端科技 推进智能布局 |《HPC高性能计算数据存储解决方案蓝皮书》正式发布
  6. Spark之RDD实战篇
  7. Feign 超时设置
  8. _2020年10个最好的Linux发行版本
  9. 原生JavaScript添加format方法 ----占位符
  10. 单片机c语言编程300例,51单片机C语言实例(350例)Proteus仿真和代码
  11. 蒸汽管道图纸符号_管道设备表常用符号.ppt
  12. python动态人脸识别_Python动态人脸识别
  13. 华为防火墙重启_华为USG6000系列防火墙重置密码
  14. 我从非科班转到图像算法工程师(图像识别、机器学习、深度学习)(3个月)的经历
  15. Axure中继器组件的使用
  16. 一位资深开发的个人经历(走心好文)
  17. Parallels Desktop 15.1.4 直装版 — 苹果电脑虚拟机
  18. IT科技行业发展现状,未来发展方向有哪些?
  19. 只知道LinkedIn的你,错过了多少机会!美帝十大求职网站收好
  20. educode寄存器设计与应用之循环移位寄存器的设计、并行存取的移位寄存器的设计(在Logisim上实现)

热门文章

  1. UE4实时渲染——渲染前和遮挡
  2. CentOS7 安装 transmission
  3. cocos2dx android studio 打包总结
  4. 关于KX混响插件:REVERB R详解
  5. u盘获取计算机管理员权限,win7系统如何获得管理员权限
  6. 华为p8刷linux系统,华为手机助手ROM一键刷机
  7. GlobalMapper20脚本应用(数据批量自动化处理)
  8. 用PrtSc键触发启动flameshot
  9. 18650锂电池保护板接线图_锂电池保护板的过流保护测试方案
  10. 激光雷达产业深度研究报告:三大思考