目标:用python实现数据的快捷处理,并输出预测值

在我的工作中,有一部分内容要涉及到年销售的预测并制定相应的订铺补计划
当然,相信很多涉及到销售行业的都会有这方面的需要,根据预测值制定分解任务指标

简单的归纳下:

  1. 对数据进行处理回正:数据并不是拿到手就能使用的,因为人为的误差,或者可能是节假日、气象灾害的影响,或者商品交付上出现延期、返单,或者其他的意外原因,需要对数据进行修正才能使用(当然,不同的数据出现的误差也不一样,不在这里赘述)
  2. 按照分析目标对数据进行处理:在这里我的目标是,用前三年的历史销售数据,来预测第四年的销售情况,并按照第四年可能的销售情况,结合自身的经营情况制定一整年并分割到月的部署

所以这里反馈的内容,就是利用Python来跑数据预测的公式,如果只是短期预测,那么Excel能简单做到,但是如果数据颗粒度达到每天,时间长度拉长到三五十年,那么处理和查漏也要花一点点小时间来完成。

步骤分解:
1.解析需要涉及到的公式:
#基于周期性变化的分析:因为商品具有季节性,所以并不能简单直接用几年的数据进行回归,得到的公式用起来不实际,所以考虑数据的周期性变化,因为365天、或者52个星期、或者12个月会包含全年的销售情况,所以按照周期T的滚动合计值,应该是符合简单线性变化的 → → →参数T
那么这里需要两个函数段:一个实现数据的滚动合计,一个实现数据的回归预测

#自定义滚动合计函数
def SUM_T_yidong(Y,T):                            #Y为需要处理的数据列表,T为数据周期SUM_T = []                                    #定义一个空列表用来装载计算出来的滚动合计值for num_1 in list(range(1, len(Y) + 1 - T)):  #从Y的第2个数据开始,到合计范围涵盖最后一个数据即第一个倒数第T个为之Sum_1 = sum(Y[num_1:num_1 + T])           #进行滚动求和SUM_T.append(Sum_1)                       #把求和值放入列表return SUM_T                                  #返回装有求和值的列表
#单数据回归预测返回函数(一元线性回归方程的程序表示)
def oneline_huigui_only_Y_yuce(Y,yuce_after_num): #根据Y列表输出后面几位的预测值X=list(range(1,len(Y)+1))                     #单列表只有Y数据,自动生成一个对应的序数列表X_pingjun = sum(X) / len(Y)                   #求X平均Y_pingjun = sum(Y) / len(Y)                   #求Y平均Sum_1 = []  # 放Xi*YiSum_2 = []  # 放Xi*Xifor n in list(range(0, len(Y))):              #计算Xn*Yn和Xn*Xn,并求b,a系数sum_1 = X[n] * Y[n]Sum_1.append(sum_1)sum_2 = X[n] * X[n]Sum_2.append(sum_2)b = (sum(Sum_1) - len(Y) * X_pingjun * Y_pingjun) / (sum(Sum_2) - len(Y) * X_pingjun * X_pingjun)a = Y_pingjun - b * X_pingjunprint('一元线性回归公式:Y='+str(b)+'X+'+str(a))#显示一下回归公式方便自查Yuce = list(range(len(Y)+1,len(Y)+yuce_after_num+1))Yucezhi = []for yuce_X_num in Yuce:                       #根据回归公式和需要预测的时间段返回预测值Y_yuce = b*yuce_X_num+aYucezhi.append(Y_yuce)return Yucezhi

根据移动求和和求和项的回归预测,可以得到预测年的移动求和回归预测值
即求和的最后一项为预测年全年,求和的倒数第二项为全年少最后一个期数据多去年最后一个期数据……
也就是说,按照求和的预测值对前面的各期数据进行递减即可得到预测年的各期预测值

这里产生了第三个程序段:

#4.根据未来一年的移动求和值反向递减出未来一年每个周期的值
meiyue = []
for a in weilai_one_year:        #这里不能用=号,会改变原先列表的数据,试错之后,用遍历复制一个列表单独使用meiyue.append(a)
for i in range(1,T):                              #先减去去年meiyue[i-1] = meiyue[i-1]-sum(sannian[-T+i:])
#print(meiyue)
for i in list(range(1,T)):                       #再减去预测年每月累加值meiyue[i] = meiyue[i]- sum(meiyue[:i])

那么,一套下来,我们就由原先的数据得到了未来的简单线性预测值,因为还没学python直接制图,所以这里导出后用Excel制表
一般来说,数据颗粒度越小越准确,但是图表上由于颗粒度对比全年的比例变小了,反而看不出明显的波动差异

最后,把整个程序用 pyinstaller -F 打包成.exe小应用,就可以方便使用了,不论数据量有多大,在回正好数据之后,导入应用就能快捷的输出预测值,节省了大量机械重复的工作时间。
由于工作操守,不对数据进行展示,但是预测值对数据的误差在可接受范围

效果:

`那么再来看下按照52周和12个月的预测情况


#变成月数据之后就能很明显的看到全年的季节性变化了

Python自学第3周反馈:用python写数据预测小应用相关推荐

  1. Python自学第5周反馈:python做多元回归分析,预测某支股票未来的最高最低价

    python做多元回归分析,预测某支股票未来的最高最低价 上一次简单的做了大盘股指的移动平滑预测,但在实际中,变化时受到多种因素影响的 所以这次基于上次的基础,用python来进行股票价格的多元线性预 ...

  2. Python自学第1周反馈:爬取全国城市未来15天天气数据

    目标:爬取城市15天天气并输出文件 步骤1:URL解析 一/不同的路径名区别在于:城市名拼音 二/相关的有用信息位于源码的第67行 步骤2:实现多个URL 尝试01:石家庄shijiazhuang,呼 ...

  3. Python自学第6周反馈:爬取某城市企业黄页信息(1)-- --分析该地区产业结构

    为了知道在某个城市什么行业比较好做,所以这里的目标时对某黄页网站的信息进行爬取,获得在录的企业数据,用来反应当地的产业结构 目标:抓取各行各业的企业数量(在录) 来源:某企业黄页网站 步骤1:解析UR ...

  4. 近找到了一个免费的python教程,两周学会了python开发【内附学习视频】

    原文作者:佛山小程序员 原文链接:https://blog.csdn.net/weixin_44192923/article/details/86515984 最近找到了一个免费的python教程,两 ...

  5. 最近找到了一个免费的python教程,两周学会了python开发

    最近找到了一个免费的python教程,两周学会了python开发 最近找到了一个免费的python教程,两周学会了python开发.推荐给大家,希望召集更多的朋友一起学习python. 最近开始整理p ...

  6. 最近找到了一个免费的python教程,两周学会了python开发【内附学习视频】

    最近找到了一个免费的python教程,两周学会了python开发.推荐给大家,希望召集更多的朋友一起学习python. 小编有一个群78486745(点击进群):里面有很多python爱好者讨论学习, ...

  7. python自学入门12周_新手怎么100天入门Python?

    作为目前最火也是最实用的编程语言,Python 不仅是新手入门程序界的首选,也逐渐成为了从大厂到小厂,招牌需求 list 的必要一条. 但学 Python 这件事情,你可能和大多数人一样,下了一百次决 ...

  8. python自学攻略-大牛整理!Python学习方法和学习路线,看完茅塞顿开!

    原标题:大牛整理!Python学习方法和学习路线,看完茅塞顿开! Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团 ...

  9. python自学-分享一位小伙伴的python自学之路,走了哪些弯路?

    原标题:分享一位小伙伴的python自学之路,走了哪些弯路? 你是如何自学Python的? 今天我们来分享一位小伙伴的自学之路.当然,如果你没有任何编程基础,也将会和他一样走很多弯路,如果有条件希望你 ...

最新文章

  1. Ubuntu 14.04 64bit上安装LNMP环境
  2. SigmaStar SSD201 操作记录
  3. Github 移动端上架!把世界最大同性交友社区装进口袋
  4. 诗与远方:无题(十五)
  5. python random模块
  6. 第七章节 类的抽象(抽象类和接口的区别)
  7. msc51单片机计数器c语言,mcs51单片机计数器工作方式1 计数初值计算与定时编程举例...
  8. java调用sqluldr_java 使用 oracle sqluldr2 快速导出数据文件
  9. 台电X80H平板安装ubantu
  10. PL(Planet)卫星群遥感数据介绍及应用
  11. linux 修改文件类型
  12. 安装打印机驱动时报错 -536870329 或 1FFFFDB9
  13. 使用aiop实现事件等待模式
  14. 唱作俱佳,腾讯AI艾灵领唱中国新儿歌
  15. 数据库中Count是什么意思和SUM有什么区别?
  16. RabbitMQ基础篇 (一)
  17. 2020倒计时,大厂核心送给每一个脚踏实地努力着的Android程序员,逆风前行
  18. python和stata哪个数据分析实例,STATA数据分析案例:Zoutendijk可行方向法
  19. iPad使用UTM SE装Win7
  20. 海量数据搜索、存储、查询、排序算法

热门文章

  1. 操作系统原理田丽华,测试与作业
  2. edge浏览器flash插件怎么启用
  3. 计算机辅助教学发展的现状,后时代,我们何去何从――浅谈计算机辅助教学现状与发展.doc...
  4. 纷享销客CRM自定义函数:创建自定义对象数据
  5. 提高计算机访问硬盘的速度慢,如何加快硬盘相应速度?6大方法提高-万兴恢复专家...
  6. QQ自定义音乐卡片代码
  7. python编程实例集合-编程小白如何结合量化实例学习python量化建模?
  8. 【Opencv图像处理】BGB转HSV与颜色检测
  9. 软件需求可测试性,软件需求管理与可跟踪性
  10. 基于.NET 5实现的开源通用权限管理平台