当前位置: 首页 > article >正文

从零开始用 Python 做销量预测(保姆级教程)

一、为什么要学销量预测想象你是某连锁奶茶店的运营备货太少 → 顾客喝不到差评 备货太多 → 过期倒掉亏钱 销量预测Sales Forecasting​ 就是为了解决这个“黄金平衡点”。在本教程中我们将用Python 真实逻辑完成一次完整的销量预测项目。二、准备工作环境与数据1️⃣ 安装必备库pip install pandas numpy matplotlib scikit-learn statsmodels2️⃣ 构造示例数据假设我们有某店铺过去 90 天的销量数据import pandas as pd import numpy as np # 构造日期 date_rng pd.date_range(start2024-01-01, end2024-03-30, freqD) np.random.seed(42) # 构造销量含趋势 波动 sales ( 100 0.5 * np.arange(len(date_rng)) 10 * np.sin(2 * np.pi * date_rng.dayofyear / 7) np.random.normal(0, 5, len(date_rng)) ) df pd.DataFrame({ date: date_rng, sales: sales }) df.set_index(date, inplaceTrue) print(df.head())三、第一步数据可视化EDA永远先看图再建模。import matplotlib.pyplot as plt plt.figure(figsize(12, 5)) plt.plot(df.index, df[sales], labelDaily Sales) plt.title(Daily Sales Trend) plt.xlabel(Date) plt.ylabel(Sales) plt.legend() plt.show()观察要点是否有上升趋势是否有周期性周几卖得好是否有异常值四、方法一线性回归初学者必学1️⃣ 特征工程给时间编号机器不懂“日期”只懂数字。df[day_index] np.arange(len(df))2️⃣ 划分训练集 测试集from sklearn.model_selection import train_test_split X df[[day_index]] y df[sales] X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.2, shuffleFalse )3️⃣ 训练模型from sklearn.linear_model import LinearRegression model LinearRegression() model.fit(X_train, y_train)4️⃣ 预测 评估from sklearn.metrics import mean_absolute_error y_pred model.predict(X_test) mae mean_absolute_error(y_test, y_pred) print(fMAE平均绝对误差{mae:.2f})线性回归适合✅ 趋势明显❌ 忽略季节性五、方法二时间序列Prophet 实战Facebook 开源的Prophet​ 非常适合业务人员。1️⃣ 安装 Prophetpip install prophet2️⃣ 数据格式转换Prophet 要求两列ds日期y数值from prophet import Prophet prophet_df df.reset_index().rename(columns{date: ds, sales: y})3️⃣ 训练 预测model Prophet( yearly_seasonalityFalse, weekly_seasonalityTrue, daily_seasonalityFalse ) model.fit(prophet_df)4️⃣ 生成未来 30 天预测future model.make_future_dataframe(periods30) forecast model.predict(future) model.plot(forecast) plt.show()✅ Prophet 自动识别周规律周末爆单节假日效应趋势变化六、模型对比哪个更好模型优点缺点适用场景线性回归简单、快忽略周期稳定趋势Prophet自动处理周期黑盒商业预测神经网络精度高数据要求高大规模预测七、落地建议非常重要7.1 不要只看 MAE还要看 RMSE、MAPE7.2 业务解释性 精度老板要听得懂7.3 定期重训模型每月更新一次7.4 做区间预测给出“乐观 / 中性 / 悲观”八、完整项目结构推荐sales_forecast/ ├── notebooks/ │ └── 01_EDA.ipynb ├── .gitignore ├── main.py ├── requirements.txt ├── models/ │ ├── prophet_model.py │ └── linear_regression_model.py ├── data/ │ └── sales.csv └── utils/ └── metrics.py1️⃣requirements.txt放在项目根目录用于一键安装依赖pandas1.5.0 numpy1.21.0 matplotlib3.5.0 scikit-learn1.0.0 prophet1.1.0 jupyter1.0.02️⃣data/sales.csv这是我们的原始数据源你可以手动创建也可以用代码生成date,sales 2024-01-01,105.2 2024-01-02,108.7 2024-01-03,112.4 2024-01-04,115.1 2024-01-05,118.9 2024-01-06,122.3 2024-01-07,119.8 2024-01-08,125.6 2024-01-09,128.4 2024-01-10,130.2 2024-01-11,127.5 2024-01-12,135.8 2024-01-13,138.2 2024-01-14,142.7 2024-01-15,140.1 2024-01-16,145.3 2024-01-17,148.9 2024-01-18,152.4 2024-01-19,149.7 2024-01-20,155.2 2024-01-21,158.6 2024-01-22,162.1 2024-01-23,165.8 2024-01-24,168.3 2024-01-25,172.9 2024-01-26,175.4 2024-01-27,178.8 2024-01-28,182.3 2024-01-29,179.6 2024-01-30,185.1✅提示真实项目中这里通常是几十万行的数据这里仅做演示。3️⃣notebooks/01_EDA.ipynbJupyter Notebook 文件用于探索性分析# %% import pandas as pd import matplotlib.pyplot as plt # 读取数据 df pd.read_csv(../data/sales.csv, parse_dates[date]) df.set_index(date, inplaceTrue) # 查看前5行 print(df.head()) # %% # 基础统计信息 print(df.describe()) # %% # 销量趋势图 plt.figure(figsize(12, 6)) plt.plot(df.index, df[sales], markero, linestyle-) plt.title(Daily Sales Trend) plt.xlabel(Date) plt.ylabel(Sales) plt.grid(True) plt.show() # %% # 按周聚合查看周期性 weekly_sales df.resample(W).mean() print(weekly_sales.tail())4️⃣utils/metrics.py工具函数专门用于评估模型好坏from sklearn.metrics import mean_absolute_error, mean_squared_error import numpy as np def evaluate_model(y_true, y_pred): 计算回归模型的常用评估指标 mae mean_absolute_error(y_true, y_pred) rmse np.sqrt(mean_squared_error(y_true, y_pred)) # 避免除以0 if y_true.mean() ! 0: mape np.mean(np.abs((y_true - y_pred) / y_true)) * 100 else: mape np.nan return { MAE: round(mae, 2), RMSE: round(rmse, 2), MAPE: f{round(mape, 2)}% }5️⃣models/prophet_model.py封装 Prophet 模型便于主程序调用from prophet import Prophet import pandas as pd class SalesProphet: def __init__(self): self.model None def train(self, df: pd.DataFrame): df 必须包含两列ds (日期), y (销量) self.model Prophet( yearly_seasonalityFalse, weekly_seasonalityTrue, daily_seasonalityFalse ) self.model.fit(df) def predict(self, periods30): 预测未来 N 天 future self.model.make_future_dataframe(periodsperiods) forecast self.model.predict(future) return forecast def plot(self, forecast): fig self.model.plot(forecast) return fig6️⃣models/linear_regression_model.py备选模型线性回归from sklearn.linear_model import LinearRegression import numpy as np class LinearSalesModel: def __init__(self): self.model LinearRegression() def train(self, X, y): self.model.fit(X, y) def predict(self, X): return self.model.predict(X) def get_coefficients(self): return { intercept: self.model.intercept_, coefficient: self.model.coef_[0] }7️⃣main.py项目的主入口文件串联整个流程import pandas as pd from utils.metrics import evaluate_model from models.prophet_model import SalesProphet def main(): print( 启动销量预测项目...) # 1. 加载数据 df pd.read_csv(data/sales.csv, parse_dates[date]) df_prophet df.rename(columns{date: ds, sales: y}) # 2. 训练模型 model SalesProphet() model.train(df_prophet) # 3. 预测未来 30 天 forecast model.predict(periods30) # 4. 评估使用历史数据进行回测 y_true df_prophet[y].values[-30:] y_pred forecast[yhat].values[-30:] metrics evaluate_model(y_true, y_pred) print( 模型评估结果) for k, v in metrics.items(): print(f{k}: {v}) # 5. 可视化 model.plot(forecast) import matplotlib.pyplot as plt plt.show() if __name__ __main__: main()8️⃣.gitignore可选但推荐# Python __pycache__/ *.pyc *.pyo # Jupyter .ipynb_checkpoints/ # 数据文件如果是敏感数据 # data/*.csv # 虚拟环境 venv/ .env✅ 运行顺序安装依赖pip install -r requirements.txt打开 Notebookjupyter notebook notebooks/01_EDA.ipynb运行主程序python main.py九、总结一句话销量预测不是“算命”而是用历史数据 数学模型降低经营的不确定性。

相关文章:

从零开始用 Python 做销量预测(保姆级教程)

一、为什么要学销量预测?想象你是某连锁奶茶店的运营:备货太少 → 顾客喝不到,差评 😡备货太多 → 过期倒掉,亏钱 😭销量预测(Sales Forecasting)​ 就是为了解决这个“黄金平衡点”…...

终极指南:如何用calendar.js轻松实现农历公历智能转换

终极指南:如何用calendar.js轻松实现农历公历智能转换 【免费下载链接】calendar.js 中国农历(阴阳历)和西元阳历即公历互转JavaScript库 项目地址: https://gitcode.com/gh_mirrors/ca/calendar.js 想要在你的Web应用中添加中国传统文…...

Win11Debloat:彻底解放Windows性能的智能优化革命

Win11Debloat:彻底解放Windows性能的智能优化革命 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and custom…...

Path of Building PoE2:终极流放之路2角色构建指南与实战教程

Path of Building PoE2:终极流放之路2角色构建指南与实战教程 【免费下载链接】PathOfBuilding-PoE2 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding-PoE2 想要在《流放之路2》中打造完美角色吗?Path of Building PoE2&#…...

《病隙碎笔》生病卧床的日子,才知道拥有健康身心的时刻是多么宝贵

《病隙碎笔》生病卧床的日子,才知道拥有健康身心的时刻是多么宝贵 史铁生(1951/1/4-2010/12/31),作家,散文家,代表作有《我与地坛》《命若琴弦》《奶奶的星星》等。 湖南文艺出版社 文章目录《病隙碎笔》生…...

动态阻抗匹配增益单元:破解脑电前端 “弱信号放大” 难题

通过上一篇文章的学习,相信大家对自研脑机接口模拟前端的整体框架有了一定的了解,其中动态阻抗匹配增益单元是解决 “微弱脑电信号无法稳定放大” 这一核心难题的关键。今天这篇文章,蔡哥就带大家来聊聊这项技术的设计背景、实现思路和实际效…...

在多模型聚合调用中体验到的路由与失败切换流畅度

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在多模型聚合调用中体验到的路由与失败切换流畅度 效果展示类,分享开发者在实际编程中,当配置了多个备用模…...

100行代码实现扩散模型:PyTorch版终极入门指南

100行代码实现扩散模型:PyTorch版终极入门指南 【免费下载链接】Diffusion-Models-pytorch Pytorch implementation of Diffusion Models (https://arxiv.org/pdf/2006.11239.pdf) 项目地址: https://gitcode.com/gh_mirrors/di/Diffusion-Models-pytorch 你…...

Office RibbonX Editor:免费开源的Office界面定制终极指南

Office RibbonX Editor:免费开源的Office界面定制终极指南 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/gh_mirrors/of/office-ribbonx-ed…...

3个步骤实现浏览器中魔兽争霸与星际争霸模型渲染的完整指南

3个步骤实现浏览器中魔兽争霸与星际争霸模型渲染的完整指南 【免费下载链接】mdx-m3-viewer A WebGL viewer for MDX and M3 files used by the games Warcraft 3 and Starcraft 2 respectively. 项目地址: https://gitcode.com/gh_mirrors/md/mdx-m3-viewer 你是否曾因…...

sudo提权漏洞-Baron Samedit (sudo堆缓冲区溢出漏洞)复现(CVE-2021-3156)

from: https://blog.csdn.net/mooyuan/article/details/156277001 注意点: 下载POC的方法不可行 可以下载的地址:https://github.com/blasty/CVE-2021-3156 文章中:宿主机访问172.17.0.1:8888环境确认服务已经搭建成功 此方法测试不可行…...

Hermes Agent 自定义供应商配置指向 Taotoken 的步骤

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Hermes Agent 自定义供应商配置指向 Taotoken 的步骤 对于使用 Hermes Agent 进行 AI 应用开发的团队而言,统一管理模型…...

视频生成MOE Mamoda2.5:基于DiT-MoE的统一多模态理解与生成框架技术解析

稀疏激活专家混合架构驱动的高效视频理解与生成新范式 多模态大模型视频生成DiT-MoE稀疏激活强化学习 统一多模态模型正经历从"单任务专家"向"一体化系统"的范式转变。字节跳动研究团队提出的Mamoda2.5,通过将细粒度混合专家(MoE&…...

Runtime不是跑kernel的——它是昇腾CANN里的执行层

前言 昇腾NPU上的算子是怎么跑起来的?有人说"runtime就是负责跑kernel的",有人说"runtime管内存分配",还有人说"runtime就是CUDA runtime的对应物"。这些答案都有对的地方,但都没说到根子上。 Ru…...

如何解决跨平台资源下载难题:res-downloader的完整使用指南

如何解决跨平台资源下载难题:res-downloader的完整使用指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否…...

洛雪音乐音源配置完全指南:免费搭建个人音乐库的终极方案

洛雪音乐音源配置完全指南:免费搭建个人音乐库的终极方案 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 洛雪音乐作为一款强大的音乐播放工具,提供了全网最新最全的音源资…...

OpCore-Simplify:三步搞定OpenCore EFI配置的终极解决方案

OpCore-Simplify:三步搞定OpenCore EFI配置的终极解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore EFI配置而…...

3大核心功能让Windows 11重获新生:Win11Debloat系统优化实战指南

3大核心功能让Windows 11重获新生:Win11Debloat系统优化实战指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declut…...

如何用SUMO-RL构建智能交通信号系统:强化学习实战指南

如何用SUMO-RL构建智能交通信号系统:强化学习实战指南 【免费下载链接】sumo-rl Reinforcement Learning environments for Traffic Signal Control with SUMO. Compatible with Gymnasium, PettingZoo, and popular RL libraries. 项目地址: https://gitcode.com…...

Ubuntu18多用户情况一用户桌面卡死,鼠标能动但点击没用——解决办法

按 Ctrl Alt F1到 F6中的某一个,切换到TTY终端,需要去试一下我的为F4输入用户名和密码然后输入:# 找到问题用户的会话ID loginctl list-sessions | grep username1# 终止该用户的图形会话(不会影响其他用户) sudo lo…...

华硕笔记本性能优化终极指南:三步搞定轻量级控制神器GHelper

华硕笔记本性能优化终极指南:三步搞定轻量级控制神器GHelper 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbo…...

Python通达信数据接口深度解析:5大核心模块构建金融数据生态

Python通达信数据接口深度解析:5大核心模块构建金融数据生态 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在前100个字内,Python通达信数据接口为你提供了一个免费、高效…...

洛雪音乐音源:如何免费畅享全网无损音乐的终极指南

洛雪音乐音源:如何免费畅享全网无损音乐的终极指南 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 还在为音乐会员费烦恼吗?洛雪音乐音源为你提供完美的免费音乐解决方案&a…...

SolveSpace参数化CAD设计:5大核心功能深度解析与实战指南

SolveSpace参数化CAD设计:5大核心功能深度解析与实战指南 【免费下载链接】solvespace Parametric 2d/3d CAD 项目地址: https://gitcode.com/gh_mirrors/so/solvespace SolveSpace是一款功能强大的开源参数化CAD软件,专为二维和三维建模设计而生…...

Vue3与Element Plus在企业级后台系统中的架构设计与深度实践

Vue3与Element Plus在企业级后台系统中的架构设计与深度实践 【免费下载链接】vue3-admin-plus 👏 An amazing admin framework of vue3 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-admin-plus 在企业级后台管理系统的开发中,开发者常面临…...

观察Taotoken在流量高峰时段的请求成功率和路由表现

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察Taotoken在流量高峰时段的请求成功率和路由表现 在构建依赖大模型能力的应用时,服务的稳定性是开发者关心的核心问…...

使用 Python 和 Taotoken 官方风格 SDK 实现你的第一个 AI 对话应用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用 Python 和 Taotoken 官方风格 SDK 实现你的第一个 AI 对话应用 对于刚开始接触大模型应用开发的 Python 程序员来说&#xff…...

告别手速焦虑:大麦抢票自动化系统全攻略

告别手速焦虑:大麦抢票自动化系统全攻略 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到演唱会门票而烦恼吗?每…...

深度解析Python SECS/GEM协议实现:secsgem库的现代架构设计

深度解析Python SECS/GEM协议实现:secsgem库的现代架构设计 【免费下载链接】secsgem Simple Python SECS/GEM implementation 项目地址: https://gitcode.com/gh_mirrors/se/secsgem 在半导体制造行业,设备与主机系统之间的标准化通信是自动化生…...

windows下vs 2015 libtorrent库的配置,vs2015下-boost-openssl-libtorrent的配置

libtorrent依赖OpenSSL和boost库,首先要编译Openssl和boost库。 1、安装ActivePerl,下载地址:网上找。 安装完后配置环境变量(一般安装成功后,环境变量就已经配置好了,如果没有配置自己配置环境变量): …...