第二章:用Python对不同的商品销售数据进行预测分析
文章目录
- 项目背景
- 获取数据
- 线性数据预测
- 非线性数据预测
本文分享知识:
- os 模块获取上一级目录的绝对地址
- pands 读取 sqlite3 数据库中的数据
- 用sklearn中的线性回归模型预测销售额数据
- pyecharts 绘制柱状图
关注微信公众号《帅帅的Python》,后台回复《数据分析》获取数据及源码
项目背景
对于商品的销售额预测,小凡之前尝试过许多方法,比如:时间序列模型、线性回归模型等。
使用模型进行数据预测,需要考虑的因素有很多,需要耗费很大的精力,而且效果也不一定好,这里小凡总结了一些简单的方法以供参考:
1、根据销售额的柱形图判断是否需要模型
2、根据任务的重要性决定模型的复杂度
3、近3个月的加权平均值是最好的选择
小凡常用的数据分析工具是 pandas、numpy ,连接数据库常用的工具是 sqlalchemy
import numpy as np
import pandas as pd
from sqlalchemy import create_engine
import os
获取数据
所使用的数据均放在 data.db 中,代码的上一级目录
# 数据库地址:数据库放在上一级目录下
db_path = os.path.join(os.path.dirname(os.getcwd()),"data.db")
engine_path = "sqlite:///"+db_path
# 获取数据函数,根据输入的SQL语句返回 DataFrame 类型数据
def link_sqlite(sql):engine = create_engine(engine_path)df = pd.read_sql(sql,con=engine)return df
线性数据预测
小凡绘制出所有商品的柱状图后,观察这些柱状图发现:
shapid为1的商品在最近9个月内有上升的趋势,适合用线性回归来预测数据
sql = "select * from predictSalesSummary where shopid=1"
df = link_sqlite(sql)
df.tail()
from pyecharts import options as opts
from pyecharts.charts import Barx_names = df["month"].tolist()
tao_bao = df["amount"].tolist()c = (Bar().add_xaxis(x_names).add_yaxis("销售额", tao_bao).set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=20)),title_opts=opts.TitleOpts(title="商品每个月销售额"),)
)
c.render_notebook()
# 从2021年2月份开始,数据呈现上升的线性趋势
df2 = df.iloc[3:,:]# 数据复制一份,避免操作失误导致数据受损
df3 = df2.copy()
# 将月份作为自变量
df3["x"] = list(range(2,11))df3
from sklearn import linear_model
from sklearn.metrics import mean_squared_error,r2_score# 自变量数据
x = df3["x"].values.tolist()
# 因变量数据
y = df3["amount"].values.tolist()
# 由于自变量只有一个维度,需要改变一下数据结构
x_reshape = np.array(x).reshape(-1,1)
# 实例化一个线性模型
lr = linear_model.LinearRegression()
# 训练数据
lr.fit(x_reshape,y)
# 预测数据
x_predict = np.array([11]).reshape(-1,1)
lr.predict(x_predict)
# array([47636.39166667])
线性模型预测shopid为 1 的商品在2021年11月的销售额为47636万元,结合10月份的销售数据来看,11月份的销售额在 [44715,47636] 之间
非线性数据预测
shopid为2的商品,在近5个月有升有降的,用模型预测会耗费很大的精力,所以采用加权平均值代替预测值的方法
shop_2_sql = "select * from predictSalesSummary where shopid=2"
shop_2_df = link_sqlite(shop_2_sql)
shop_2_df
from pyecharts import options as opts
from pyecharts.charts import Barx_names = shop_2_df["month"].tolist()
tao_bao = shop_2_df["amount"].tolist()c = (Bar().add_xaxis(x_names).add_yaxis("销售额", tao_bao).set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=20)),title_opts=opts.TitleOpts(title="商品每个月销售额"),)
)
c.render_notebook()
8月份、9月份、10月份的权重为0.2,0.2,0.6,计算得出11月份的销售额为2093万元,结合10月份的销售数据来看,11月份的销售额在 [2091,2094] 之间
np.sum(shop_2_df.iloc[4:,1]*np.array([0.2,0.2,0.6]))
# 2093.44
shop_2_df.iloc[4:,1].mean()
# 2094.47
第二章:用Python对不同的商品销售数据进行预测分析相关推荐
- Python基础——第二章:Python基础语法
前言 本文是根据黑马程序员Python教程所作之笔记,目的是为了方便我本人以及广大同学们查漏补缺. 不想做笔记直接来我的频道.当然啦,自己的笔记才是最好的哦! PS:感谢黑马程序员! 教程链接:黑马程 ...
- 【大数据分析专业毕设之基于python爬虫的电影票房大数据预测分析+大屏可视化分析
[大数据分析专业毕设之基于python爬虫的电影票房大数据预测分析+大屏可视化分析-哔哩哔哩https://b23.tv/saIKtBH flask web框架,数据使用requests模块爬取数据, ...
- Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)
全文目录 ==先导知识== 学习目标: 2.1 代码格式 2.1.1 注释 2.1.2 缩进 2.1.3 语句换行 2.2 标识符和关键字 2.2.1 标识符 2.2.2 关键字 2.3 变量和数据类 ...
- 《Python核心编程》第二版第36页第二章练习 -Python核心编程答案-自己做的-
<Python核心编程>第二版第36页第二章练习 这里列出的答案不是来自官方资源,是我自己做的练习,可能有误. 2.21 练习 2-1. 变量,print和字符串格式化操作符.启动交互式解 ...
- 第二章:python必备基础语法
文章目录 第二章 python必备基础语法 一.变量 1.1 什么是变量?有什么用处? 1.2 如何声明一个变量(即定义变量)? 1.3 变量的命名规则及风格 1.4 变量值的三大特性 作业: 1.5 ...
- Python中利用LSTM模型进行时间序列预测分析
时间序列模型 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征.这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺 ...
- (Python高级编程)第二章:Python中的魔法函数
文章目录 一:什么是魔法函数 (1)魔法函数 (2)作用 二:Python中的魔法函数 (1)字符串表示 (2)集合序列相关 (3)迭代相关- (4)可调用 (5)with上下文管理器 (6)数制转换 ...
- Python开发【第二章】python入门
第一句python代码 python代码:新建一个记事本,输入print("hello world"),保存,重命名为helloworld.py. 代码的执行:1.在桌面状态下,w ...
- python的神经网络编程_Python神经网络编程 第二章 使用Python进行DIY
使用神经网络识别手写数字: import numpy # scipy.special for the sigmoid function expit(),即S函数 import scipy.specia ...
- 商品销售数据建模及分析
一.概述 本篇的数据集及程序代码上传在个人github上 本文针对所给的酒类商品销售数据集进行了以下两大类分析: (1) 统计分析类 酒种的销售统计 地区的销售统计 (2) 建模分析类 相似用户反馈 ...
最新文章
- Linux下创建进程简介
- maya批量命名插件_教你玩转MAYA的四十二精华造诣(第一期)
- [亲测]在Mac下配置php开发环境:Apache+php+MySql
- JVM实战与原理---类加载机制
- qstring截取一段字符串_笔记 | 自学Python 05:数据类型之字符串
- 绑定dictionary 给定关键字不再字典中_VBA代码集锦-利用字典做两列数据的对比并对齐...
- 我是怎么用机器学习技术找到女票的
- background使用
- 我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?|附视频讲解
- html怎么控制进度条,HTML如何实现进度条?附源码
- 免费查题合集大推荐,付费根本不存在的!
- X86 “将死“?RISC-V 正当立
- busybox linux内核,使用busybox创建精简linux内核实例
- perl--CGI编程之测试环境
- Spark的基本工作流程
- 删除IE浏览器input框自带的删除叉
- Esp8266 进阶之路19 【外设篇①】esp8266驱动 ds18b20、dht11 温湿度传感器,采集温湿度传感器到服务器。(附带Demo)
- sub 对应php什么函数,subtotal函数的使用方法1-9分别什么意思
- 转码解密挖矿 显卡计算能力大对比
- 菜鸡游戏 云游戏平台 低配手机、电视、PCMAC电脑、平板 畅玩大型游戏
热门文章
- java面试题库app
- python 通达信公式函数,python通达信公式函数,python调用通达信数据
- linux下JMeter安装
- 北斗导航 | 基于奇偶矢量法的RAIM之SSE探索(附奇偶矢量法源代码)
- python shell清屏指令_python shell怎么清屏
- Xmind模板文档分享——商务模板(2)
- 【离散数学】集合论 第三章 集合与关系(4) 集合的归纳定义、归纳证明、数学归纳法第一/二原理
- 关于「EPI」的练习 + 秋招笔试所用题库总结(持续更新~)+秋招笔试题库资源分享(无偿)
- python颜色过渡
- UE4 视差毛发材质