Skip to content

About

浙江理工大学-大一-Python 课程大作业-办公室 A4 复印纸采购优化师-爬虫、预测、决策

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

A4 Paper Procurement Optimizer

Python 课程大作业:办公室 A4 复印纸采购优化师。项目围绕“谁是金牌采购员”这一情境,完成从电商历史价格采集、数据清洗与可视化、价格预测,到年度采购策略制定的完整数据处理流程。

本仓库已包含课程三个阶段的代码、数据、图表和报告文档。部分脚本运行后会在当前目录生成新的 CSV、图片、HTML 或文本文件,复现前请先确认工作目录和输出文件名。

项目目标

在年度预算、初始库存、月度消耗和仓库容量限制下,尽可能提高 A4 复印纸全年采购数量,并保证采购过程不超预算、不超仓储上限、不断供。

项目主要完成:

  • 从慢慢买等价格平台获取 A4 复印纸历史价格数据
  • 对价格数据进行清洗、统计分析和可视化
  • 使用时间序列特征和 XGBoost 模型预测未来 30 天价格
  • 基于历史价格分位数、促销期、库存安全线和预算约束生成采购决策

目录结构

.
├── python大作业要求/
│   ├── PythonCourse assignment.docx
│   └── Python课程作业:办公室复印纸采购优化师2.docx
├── stage1_web_scraping/
│   ├── 2025337621180_spider.py
│   ├── 2025337621180_preprocess.py
│   ├── 2025337621180_岳玥_Crawler Report.docx
│   └── PK1/
│       ├── 2025337621180_spiderPK.py
│       ├── 2025337621180_result.csv
│       └── PK Race 1要求.docx
├── stage2_analysis_prediction/
│   ├── stage2/
│   │   ├── 2025337621180_visual.py
│   │   ├── 2025337621180_result.csv
│   │   ├── 2025337621180_predict.csv
│   │   ├── 2025337621180_岳玥_Analysis Report.docx
│   │   ├── result/
│   │   └── predict/
│   │       ├── 2025337621180_model.py
│   │       └── *.csv
│   └── PK2/
│       ├── 2025337621180_predict.py
│       ├── *.csv
│       ├── result/
│       └── PK race2要求.docx
└── stage3_procurement_optimization/
    ├── 2025337621180_decision1.py
    ├── 2025337621180_decision2.py
    ├── 2025337621180_decision3.py
    ├── product_stats.csv
    ├── brand_stats.csv
    ├── export.sqlite
    └── 2025337621180_岳玥_DecisionReport.docx

阶段说明

Stage 1:数据采集与预处理

stage1_web_scraping/2025337621180_spider.py 使用 requests 调用慢慢买历史价格接口,对预设商品链接进行价格数据抓取,解析接口返回的 jiagequshi 字段,输出包含日期、价格、备注、商品名和商品链接的 CSV 文件。

stage1_web_scraping/2025337621180_preprocess.py 用于读取单个 CSV,完成日期和价格类型转换、缺失值清理、按时间排序、基础统计分析、价格趋势图绘制,并生成清洗后的 CSV 与文本报告。

stage1_web_scraping/PK1/2025337621180_spiderPK.py 是第一阶段 PK 版脚本,固定采集 5 个 A4 复印纸商品,并统一输出字段:

商品品牌, 规格, 来源网站, 来源店铺, 类型, 时间, 价格

Stage 2:数据分析、可视化与预测

stage2_analysis_prediction/stage2/2025337621180_visual.py 对汇总价格数据进行统计和可视化,输出品牌价格趋势、均价对比、箱线图、月度趋势、热力图、散点图、相关性图和 Plotly 动态趋势图。

主要可视化结果保存在:

stage2_analysis_prediction/stage2/result/

stage2_analysis_prediction/stage2/predict/2025337621180_model.py 使用多个商品价格序列训练 XGBoost 回归模型。脚本包含:

  • 价格字段清洗与异常值过滤
  • 商品和平台编码
  • 时间特征、节假日/促销特征
  • 滞后特征、差分特征、7 日滚动统计特征
  • 训练集/测试集切分
  • MAE、RMSE 模型评估
  • 未来 30 天递推预测
  • 基于预算、趋势、品牌和平台筛选的交互式采购推荐

预测结果字段为:

产品, 来源网站, 时间, 价格, trend

其中 trend 表示价格趋势:-1 为下降,0 为稳定,1 为上涨。

stage2_analysis_prediction/PK2/2025337621180_predict.py 是第二阶段 PK 版预测脚本,重点输出 10 个价格序列未来 30 天预测结果。

Stage 3:采购决策优化

第三阶段围绕全年动态采购决策展开,约束包括:

  • 初始预算:20000 元
  • 初始库存:40 箱
  • 仓库容量上限:150 箱
  • 月度消耗量:1、2、7、8 月各 10 箱,其余月份各 20 箱
  • 4 月 30 日结束时需要保留库存

product_stats.csv 和 brand_stats.csv 分别提供商品级和品牌级统计参考,包括均价、最低价、最高价、中位数、标准差、样本数、Q25、Q75、低价阈值和高价阈值。

export.sqlite 中包含 Goods 表,共 57,988 条历史商品价格记录,字段包括:

ID, Name, Price, Date, Platform, Link

2025337621180_decision1.py、2025337621180_decision2.py、2025337621180_decision3.py 是不同版本的采购决策程序。它们都会根据输入的日期、价格和商品名称,动态更新库存与预算,并输出建议购买数量。

交互输入格式示例:

6.20,82,齐心 白云海

常用命令:

reset      重置预算和库存
debug on   开启调试信息
debug off  关闭调试信息
exit       结束并输出最终状态

环境依赖

建议使用 Python 3.9 及以上版本。

pip install pandas numpy matplotlib seaborn plotly requests scikit-learn xgboost

如果图表中的中文显示异常,需要确保本机安装了支持中文的字体,例如 SimHei。

运行提示

请在对应脚本所在目录运行脚本,因为部分代码使用相对路径读取输入文件或写入输出文件。例如:

cd stage2_analysis_prediction/stage2
python 2025337621180_visual.py
cd stage2_analysis_prediction/stage2/predict
python 2025337621180_model.py
cd stage3_procurement_optimization
python 2025337621180_decision3.py

注意:

  • 爬虫脚本依赖外部接口,接口可用性和返回格式可能随时间变化。
  • 部分脚本会生成或覆盖同名结果文件,运行前建议先备份重要输出。
  • 中文 CSV 可能存在 utf-8-sig 或系统默认编码差异,若读取乱码,可尝试切换编码。
  • 本项目保留了课程报告、PK 要求、已有数据和结果文件,便于完整展示课程作业过程。

作者

  • 学校:浙江理工大学
  • 学号:2025337621180
  • 姓名:岳玥

About

浙江理工大学-大一-Python 课程大作业-办公室 A4 复印纸采购优化师-爬虫、预测、决策

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages