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['销售金额']

这里有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 ARMAfrom datetime import datetimefrom 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_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语言,需要加入Python语言群的,请扫码加我个人微信,备注【姓名-Python群】,我诚邀你入群,大家学习和分享。

关于Python语言,有任何问题或者想法,请留言或者加群讨论。

.describe() python_Python实现ARMA模型相关推荐

  1. Python实现ARMA模型

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

  2. AR模型、MA(Moving Average)模型、ARMA模型、时间序列的定阶、ARIMA、SARIMAX

    AR模型.MA(Moving Average)模型.ARMA模型.时间序列的定阶.ARIMA.SARIMAX 目录 AR模型.MA(Moving Average)模型.ARMA模型.时间序列的定阶.A ...

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

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

  4. arma模型_R语言与计量经济学(七)ARMA模型

    前面说了AR模型和MA模型,ARMA就是结合一下,既有自回归又有移动平均 就是这样形式哈!懒得打公式... 同样还是举个栗子 ! #ARMA自回归移动平均模型 mod<-arima.sim(mo ...

  5. arma模型谱估计matlab_基于机器学习的心律失常分类(四)——心电信号特征提取[MATLAB]...

    目前比较常用的特征提取是提取心电信号的各波形间期长度.波峰高度等,本文是使用ARMA模型对心电信号进行处理,使用其系数来作为特征. 一.心拍划分 大多伴有异常波形的心律失常信号,通常都会具体表现在单个 ...

  6. arma模型_GARCH模型应用:以国泰君安为例

    1.下载国泰君安股票数据,计算对数收益率 (1)首先安装包"quantmod",这个包可以从雅虎财经的下载股票数据,具体包的解释见"[量化基础]R语言获取金融数据之qua ...

  7. arma模型_Eviews经典案例 | 初学者必看!ARMA模型精讲

    [本期分析师介绍]希音老师,<数据分析学堂>金牌分析师,对eviews的时间序列.ARMA.VAR.VECM.ARCH.GARCH等操作有深入的研究和实战经验,累计服务客户1000+.今天 ...

  8. ARMA模型的性质之ARMA模型

    目录 一.ARMA模型的定义 二.平稳条件与可逆条件 三.传递形式与逆转形式 四.ARMA(p,q)模型的统计性质 1.均值 2.自协方差函数 3.自相关系数 4.ARMA(p,q)模型自相关系数拖尾 ...

  9. arma预测matlab讲解,MATLAB中ARMA模型预测差分问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我MATLAB预测风速的程序,程序不是我自己写的,我也是拿来参考自己的毕业作业的.每条程序旁的中文是我自己的理解,我也不知道对不对. 程序1 X=lo ...

最新文章

  1. probit概率单位回归分析
  2. vue根据不同权限显示图片_vue如何实现路由权限控制
  3. 【运筹学】线性规划 单纯形法 阶段总结 ( 初始基可行解 | 判定最优解 | 迭代 | 得到最优解 | 全流程详细解析 ) ★
  4. 系统启动与内核管理 ;AWK部分 重要内容 (实验及awk的常见面试题)
  5. 微软KV Store Faster如何巧妙实现1.6亿ops
  6. modbus-crc16——c语言
  7. Access“INSERT INTO 语句的语法错误”解决办法
  8. 第一章,安装 composer
  9. 通俗易懂的MonteCarlo积分方法(五)
  10. Pascal数据结构与算法
  11. 1602显示字符串的C语言程序,LCD1602程序显示字符串
  12. Linux基础学习笔记整理——第二章 管理文件和目录
  13. 微信小游戏上线发布全流程详解
  14. between ..... and 用法
  15. 安卓开发学习——第四天
  16. 手机发出的邮件可以撤回吗?已发出的邮件撤回后对方能看到吗?
  17. Google搜索设置在新标签页打开的方法
  18. 苹果展开新显示器带动高阶需求:Mini LED背光技术
  19. Lucene.Net 实现搜索功能
  20. web图片裁切插件 cropper.js 详细介绍

热门文章

  1. demo.php url,return_url.php
  2. mybatis collection标签_MyBatis第二天(结果映射+动态sql+关联查询)
  3. atiken插值c++_c++插值代码
  4. 入门学习因果推断在智能营销/权益应用的通用框架
  5. python︱处理与使用json格式的数据(json/UltraJSON/Demjson)、pickle模块、yaml模块
  6. python import自定义模块方法
  7. PIE SDK矢量点生成等值线、面
  8. Linux编辑启动停止重启springboot jar包脚本
  9. 【web前端面试题整理03】来看一点CSS相关的吧
  10. 递归大总结之台阶问题