恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

电商数据分析系统实战:Python+pandas洞察订单用户与商品

  • 首页
  • 资讯中心
  • /
  • 电商数据分析系统实战:Python+pandas洞察订单用户与商品

相关资讯

前端面试高频考点精讲:闭包、异步、原型链与手写题全解析 2026/10/12 20:10:15
gemini-business2api 多账号负载均衡核心原理:轮询、冷却与重试策略源码剖析 2026/10/12 20:10:15
MTCNN源码级实战:人脸检测与关键点对齐全流程解析 2026/10/12 20:10:15

最新资讯

AI应用三层架构:输入预处理、模型引擎、输出后处理实战指南
行李箱缺陷检测数据集:650张实拍图+YOLO/VOC双格式
Claude Code全流程AI开发实战:从宠物健康需求到可部署App
AI视频工作流:从人话需求到平台化成片的工程化实践
OpenClaw实测:AI从陪聊到干活的自动化任务执行指南
Claude Code 提示词工程实战:用 TypeScript 与 React Ink 打造 CLI 交互式提示词调试器,TaoToken 统一 Key 接入

今日推荐

Debian新手入门:从部署到日常操作的完整指南
MongoDB复制集扩缩容实战:从rs.add到选主事故复盘
条形码目标检测数据集实战:从YOLOv8训练到部署

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

电商数据分析系统实战:Python+pandas洞察订单用户与商品

发布时间:2026/10/12 20:10:15
电商数据分析系统实战:Python+pandas洞察订单用户与商品 简介这是一套完整的电商平台数据分析系统Python实现面向计算机、自动化等相关专业学生及从业者适用于期末课程设计、课程大作业或毕业设计等场景可完成从数据读取、数据处理到数据分析与可视化的全流程实践。压缩包共包含30个文件涉及7个Python核心脚本、19张可视化分析图表、3个编译缓存文件及1份项目说明文档整体大小1.68MB脚本覆盖用户行为、销售趋势、复购率、RFM模型、渠道来源等分析模块图表则直观呈现订单金额、支付金额、平台类型等维度的清洗与处理结果。项目说明文档清晰列出了数据字典、2020年数据提取规则以及异常支付时间、负金额等脏数据的处理方式。目前已有883位学习者下载使用代码经过运行验证可直接运行或二次修改既能作为个人项目练习也可为相关课题提供完整的分析思路与排错参考。1. 电商数据分析系统课程大作业一套代码把订单、用户、商品讲清楚每年到课程设计季总有人拿着十几万行的订单数据不知道从哪下手。电商数据分析系统的本质不是炫技是把订单表、用户表、商品表这三张最常见的数据拉通回答清楚三个问题卖了什么、谁在买、卖得怎么样。这个 Python 实现方案之所以适合当课程大作业是因为它不依赖任何重型组件pandas matplotlib 就能搞定核心分析链路从读取 CSV 到产出可视化报告一晚上能跑通但要做出区分度得在 RFM 分层和关联规则上多花功夫。适合刚学完 Python 基础、想用数据展示自己编码能力的学生也适合需要快速搭建分析流程的从业者做参考。下面按我实际调通这套系统的顺序把模块拆解、环境配置、核心代码、常见坑位一次讲透。2. 拆解电商数据分析系统的模块订单、用户、商品、RFM 分层一个都不能少2.1 系统的三个核心数据源订单表、用户表、商品表做电商数据分析最常见的落地方式是先拿到三张模拟或脱敏后的表。订单表通常包含订单号、用户 ID、下单时间、支付金额、商品 ID、数量用户表包含用户 ID、注册时间、性别、城市、年龄商品表包含商品 ID、商品名称、类目、单价、成本价。这套系统的分析路径就是围绕这三张表展开的每一张表都要先回答一个核心问题这张表能支撑哪些分析指标哪些指标因为字段缺失做不了。拿我常用的模拟数据来说订单表一行的典型结构是order_id, user_id, order_date, product_id, quantity, amount, status其中status这个字段坑最多——很多初版数据里混着“已支付”“已退款”“待支付”如果不做过滤销售额会被严重污染。我一般先做状态过滤只保留已支付的订单再按用户、按时间做聚合。先抽出三张表的关系是下单关系也就是订单表通过 user_id 关联用户表通过 product_id 关联商品表这才是全套分析的基座。2.2 分析维度的取舍不是指标越多越好8 个核心指标已足够覆盖大作业需求很多同学起初容易陷入指标堆砌的节奏恨不得把平均值、方差、众数全部铺在报告里。这里我的血泪经验是课程大作业拼的不是指标数量而是分析逻辑是否完整。一个能让评审老师眼前一亮的方案通常围绕 GMV成交总额、订单量、客单价、用户复购率、商品类目占比、城市分布、RFM 分层、关联推荐这 8 个核心指标展开。为什么选这 8 个因为它们分别回答了电商业务最关心的 5 个问题卖了多少、卖得是否健康、哪些用户值得运营、哪些商品撑起大盘、哪些商品适合打包推荐。我先按这个清单梳理系统模块数据读取与清洗模块、销售趋势分析模块、用户行为分析模块、RFM 价值分析模块、商品分析与关联规则模块、可视化报表导出模块。这套设计是典型的“底层数据 分析逻辑 前端呈现”三层结构分层清晰也方便写成文档。你后续答辩时只要把每一层的输入输出说清楚再把模块之间的依赖关系画出来基本就稳了。2.3 用 pandas 拉通三张表join 逻辑与字段对齐的细节模块拆定之后第一步是数据加载和表关联。我的建议是写一个独立的 data_loader.py把数据读取和字段改名统一封装不要在多个分析脚本里重复读表。这样下面做销售分析时不用反复对字段名少踩不少坑。import pandas as pd orders pd.read_csv(data/orders.csv, parse_dates[order_date], encodingutf-8) users pd.read_csv(data/users.csv, encodingutf-8) products pd.read_csv(data/products.csv, encodingutf-8) # 统一字段名避免分析脚本里到处改列名 orders.rename(columns{user_id: uid, product_id: pid, amount: sales}, inplaceTrue) users.rename(columns{user_id: uid}, inplaceTrue) products.rename(columns{product_id: pid, price: unit_price}, inplaceTrue) # 只保留已支付订单剔除退款和待支付 orders orders[orders[status] 已支付].copy() # 订单关联用户表拿到用户城市和性别 biz_df orders.merge(users[[uid, city, gender, age]], onuid, howleft) # 再关联商品表拿到商品类目 biz_df biz_df.merge(products[[pid, category, product_name]], onpid, howleft)代码逻辑说明parse_dates直接解析时间列省去后面to_datetime的转换rename统一列名是因为原始数据的字段命名经常不一致而分析脚本里写越短的列名越不容易出错。merge用howleft保证订单记录不丢失如果某个订单关联不到用户city 字段会是空值可以在后面统计时单独处理。参数说明中注意两个地方howleft是有意为之希望以订单表为基准保留所有合法订单而不是只保留匹配到的记录status过滤放在关联前这样关联的数据量小运行更快。如果你自己造数据订单状态一定要模拟出这几种状态否则这个过滤步骤就体现不出来报告里分析的亮点会少掉一块。2.4 清洗环节不能省缺失值、时间格式、金额字段三处容易翻车数据清洗不复杂但三个地方容易踩坑。第一是缺失值实际课程数据里常出现 user_id 为空或者 product_name 为空的记录我会先看总缺失量再做定向处理。第二是时间格式有些 CSV 里的时间是字符串如2024/03/01 12:33:22有些是2024-03-01如果不统一按月份聚合时会直接把不同格式的日期拆成两组。第三是金额字段个别原始数据会把金额写成¥128.00这种带货币符号的字符串不转成 float 后续计算全崩。# 缺失值检查 print(biz_df.isnull().sum()) # 统一日期格式提取月份做月度趋势 biz_df[order_month] pd.to_datetime(biz_df[order_date]).dt.to_period(M) # 金额字段清洗去掉货币符号并转数值 biz_df[sales] biz_df[sales].astype(str).str.replace(¥, ).astype(float) # 异常订单过滤金额极小或为负视为异常 biz_df biz_df[(biz_df[sales] 0) (biz_df[sales] 100000)]逻辑说明isnull().sum()是快速体检的入口缺失量集中在哪个字段一目了然。to_period(M)返回的是 Period 对象后续按月分组时比直接用字符串截取更规范。金额清洗用str.replace结合astype(float)顺序是先转字符串再替换符号再转数值如果先astype(float)再替换就会抛异常。这里最容易被忽略的是最后一行过滤即金额大于 0 且小于 100000。真实模拟数据里偶尔会有金额为 0 的测试订单或金额极大的异常订单不设边界会让月度 GMV 曲线出现一个离谱的尖峰答辩时被问到会很尴尬。边界值怎么设看你的数据分布一般超过 99.9 分位数的都值得怀疑。3. 从零到第一个输出构建 Python 运行环境与最小可执行链路3.1 环境搭建Python 版本、虚拟环境与依赖安装整套系统建议在 Python 3.9 到 3.11 之间跑太新的版本有些第三方库可能还没适配。我用的是 Python 3.10配合 pandas 2.x 和 matplotlib 3.8 的稳定组合。推荐用虚拟环境隔离避免把系统 Python 搞乱。Windows 和 macOS 下的创建方式一致激活命令略有区别。# 创建虚拟环境 python -m venv .venv # 激活环境Windows .venv\Scripts\activate # 激活环境macOS / Linux source .venv/bin/activate # 安装核心依赖 pip install pandas matplotlib seaborn openpyxl参数说明openpyxl不是直接做分析用的而是后面导出 Excel 报告时 pandas 引擎需要的依赖。如果你不装它to_excel方法会报错说缺少引擎。seaborn是可选的如果你喜欢更美观的默认配色就装如果不想增加依赖纯 matplotlib 也能完成全部图表。安装过程中最常见的报错是 pandas 和 numpy 版本冲突现象是ImportError: Something is wrong with the numpy installation。我的处理方法是先升级 numpy 到最新稳定版再装 pandas或者直接按上述命令装让 pip 自行解析依赖版本一般都能解决。3.2 最小运行链路读数据、算总 GMV、画第一张图环境就绪后别急着写完整系统先跑一条最小链路读订单表 → 算总销售额 → 画月度趋势图。这个链路只要跑通了说明环境、数据、编码解码、绘图所有环节都是健康的后面再怎么扩展都不容易被环境问题卡住。import pandas as pd import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei, Microsoft YaHei] plt.rcParams[axes.unicode_minus] False orders pd.read_csv(data/orders.csv, parse_dates[order_date], encodingutf-8) orders[month] orders[order_date].dt.to_period(M) monthly_gmv orders.groupby(month)[amount].sum() plt.figure(figsize(10, 5)) monthly_gmv.plot(kindline, markero) plt.title(月度成交总额趋势) plt.xlabel(月份) plt.ylabel(GMV) plt.grid(True, alpha0.3) plt.tight_layout() plt.savefig(output/monthly_gmv.png, dpi150) plt.show()逻辑说明这段代码把订单按月分组groupby(month)得到的就是一个以月份为索引、当月销售额为值的 Series 对象。plot(kindline, markero)画出带数据点的折线图可以直观看到销售额的峰谷期。savefig保存到 output 目录是为后面生成报告做准备dpi150保证图片在论文或 PPT 里放大不糊。这里最容易翻车的是中文字体设置。Windows 环境下 SimHei 通常可用macOS 下则建议用Arial Unicode MS或PingFang SC。如果不设置中文字体图上所有标题和标签都会变成方块这是新手最常见的翻车现场。另注意plt.rcParams[axes.unicode_minus]必须设为False否则负号在部分中文字体里显示为乱码方块。3.3 输出目录结构把代码、数据、图片、报告分离管理项目能不能一眼看出专业感目录结构很重要。我习惯把项目拆成四个子目录data放原始 CSVoutput放分析图片和结果表scripts放核心代码report放说明文档和 PPT。这样写进课程作业文档时每个模块对应哪个文件一说就清楚也方便别人复现你的分析。ecommerce_analysis/ ├── data/ │ ├── orders.csv │ ├── users.csv │ └── products.csv ├── output/ │ └── monthly_gmv.png ├── scripts/ │ ├── data_loader.py │ ├── sales_analysis.py │ ├── rfm_analysis.py │ └── association_rules.py └── report/ └── 使用教程说明.md这个结构不是随便摆的data_loader.py是共用模块sales_analysis.py、rfm_analysis.py、association_rules.py分别对应分析的三条线。每条线独立运行输出都汇总到output目录。你之后打包成 zip 提交时按这个顺序归档就行评审老师打开后能在两分钟内定位到关键代码印象分会直接上去。4. 核心分析代码逐段拆解销售额趋势、RFM 分层与关联规则4.1 销售分析模块从月销量到 Top10 商品的完整链路销售分析的目的是回答“卖得怎么样”。我通常输出三张图月度 GMV 趋势、类目销售额占比、Top10 商品销售额柱状图。这三张图分别描述时间维度、结构维度、单品维度串起来就是一份完整的销售概览。import pandas as pd import matplotlib.pyplot as plt def load_clean_data(): orders pd.read_csv(data/orders.csv, parse_dates[order_date], encodingutf-8) products pd.read_csv(data/products.csv, encodingutf-8) orders orders[orders[status] 已支付].copy() orders orders.merge(products[[product_id, category, price]], onproduct_id, howleft) orders[sales] orders[quantity] * orders[price] return orders df load_clean_data() # 月度 GMV 趋势 df[month] df[order_date].dt.to_period(M) monthly df.groupby(month)[sales].sum() monthly.plot(kindline, markero, figsize(10, 4), title月度GMV趋势) plt.tight_layout() plt.savefig(output/monthly_gmv.png, dpi150) plt.show() # Top10 商品销售额 top10 df.groupby(product_name)[sales].sum().nlargest(10) top10.plot(kindbarh, figsize(8, 6), colorsteelblue, titleTop10商品销售额) plt.tight_layout() plt.savefig(output/top10_products.png, dpi150) plt.show()逻辑说明quantity * price计算单笔订单销售额先过滤掉非支付状态再关联商品表取得价格。月度趋势用to_period(M)做月份对齐避免字符串排序错乱。Top10 用nlargest(10)取销售额最高的 10 个商品barh横向柱状图在商品名称较长时比竖图更易读。这里有一个容易忽略的参数dpi150是保存图片的基础设置如果你最终报告是打印版用 200如果只是电子版150 足够且生成速度快。tight_layout()会让图表边缘自适应防止标题或坐标轴标签被裁掉。你运行后注意观察 X 轴的月份标签如果过于密集说明数据跨度大可以设置plt.xticks(rotation45)旋转标签来改善。4.2 RFM 用户分层模型用三列数据把用户分成 8 类RFM 是电商数据分析里最有技术含量的模块也是答辩时最能加分的点。R 代表最近一次消费间隔RecencyF 代表消费频率FrequencyM 代表消费金额Monetary。核心逻辑很简单给每个用户算这三个值再分别和中位数比较高于中位数记为 1否则记为 0最终组合成 8 种用户类型。import pandas as pd df load_clean_data() # 以 2024-12-31 为参考日计算最近消费间隔 ref_date pd.Timestamp(2024-12-31) rfm df.groupby(user_id).agg( recency(order_date, lambda x: (ref_date - x.max()).days), frequency(order_date, count), monetary(sales, sum) ) # 按中位数划分高低 rfm[R_flag] (rfm[recency] rfm[recency].median()).astype(int) rfm[F_flag] (rfm[frequency] rfm[frequency].median()).astype(int) rfm[M_flag] (rfm[monetary] rfm[monetary].median()).astype(int) # 组合标签111 为高价值客户000 为流失客户 rfm[segment] rfm[R_flag].astype(str) rfm[F_flag].astype(str) rfm[M_flag].astype(str) # 统计各类客户占比 segment_stats rfm[segment].value_counts().sort_index() print(segment_stats)逻辑说明groupby(user_id).agg同时算三个维度recency用 lambda 取每个用户最近一次下单日期用参考日减去它得到间隔天数间隔越短用户越活跃。count统计下单次数。astype(int)把布尔值转成 0 和 1方便后续拼接成字符串标签。这里有两个需要解释的选型参考日为什么不取当前日期因为课程数据通常是过去某个时间段的模拟数据如果取系统当前日期间隔天数会偏大导致 R 值整体失真所以必须固定为一个业务参考日。中位数为什么不是平均值因为消费金额和频率的分布通常右偏严重少数大客户会拉高均值中位数更稳健。得到 8 类标签后不能只停在统计阶段要把结果可视化。我一般画一张横向条形图展示各类用户数量再把“重要保持客户”111和“重要发展客户”110单独拎出来做标注这样答辩时可以直接说“系统识别出了 xx 个高价值客户占总用户数的 xx%”。4.3 关联规则挖掘用 Apriori 找“买了 A 又买 B”的商品组合关联规则是电商分析里最有商业味道的模块。常见做法是用mlxtend库中的 Apriori 算法输出“啤酒和尿布”式的商品组合建议。课程大作业里不需要把算法实现过程写全直接调用库、讲清楚支持度和置信度的含义即可。from mlxtend.frequent_patterns import apriori, association_rules # 构造购物篮矩阵行为订单列为商品 basket df.groupby([order_id, product_name])[quantity].sum().unstack().fillna(0) basket basket.applymap(lambda x: 1 if x 0 else 0) # 支持度阈值设为 0.02找出频繁项集 frequent_itemsets apriori(basket, min_support0.02, use_colnamesTrue) # 生成关联规则置信度阈值设为 0.3 rules association_rules(frequent_itemsets, metricconfidence, min_threshold0.3) rules rules.sort_values(lift, ascendingFalse) print(rules.head())逻辑说明unstack()把“每个订单买了哪些商品”转成一张 0/1 矩阵这是 Apriori 的标准输入格式。applymap把数量转成二元值因为关联规则只关心“买没买”不关心买几件。association_rules返回四列关键指标支持度、置信度、提升度lift和驶入项集。参数说明min_support0.02表示至少 2% 的订单包含该组合低于这个值会产生大量低频规则和噪音。min_threshold0.3是置信度下限表示买了 A 的订单中有 30% 会再买 B。sort_values(lift)把提升度最高的规则排前面提升度大于 1 才说明组合有正相关小于 1 反而是负相关。这里最大的坑是购物篮矩阵可能非常稀疏订单数多、商品数也多时矩阵会膨胀运行速度明显变慢。如果数据量超过 50 万行建议先做商品过滤只保留出现次数超过 50 次的商品再构建矩阵。此外use_colnamesTrue必须设置否则列名显示的是索引编号规则里全是数字完全没法解读。4.4 一键生成分析报告Matplotlib 多子图与结果聚合输出各个模块单独跑通后最后一步是把所有图表汇总到一个页面。我常用plt.subplots创建 2×2 的宫格布局将月度趋势、类目占比、RFM 分布、关联规则置信度集中展示。这样做的好处是报告直观也符合课程设计“成果展示”的定位。import matplotlib.pyplot as plt fig, axes plt.subplots(2, 2, figsize(14, 10)) # 子图1月度GMV axes[0, 0].plot(monthly.index.astype(str), monthly.values, markero) axes[0, 0].set_title(月度GMV趋势) axes[0, 0].tick_params(axisx, rotation45) # 子图2类目占比 category_stats df.groupby(category)[sales].sum() axes[0, 1].pie(category_stats.values, labelscategory_stats.index, autopct%.1f%%) # 子图3RFM分层 axes[1, 0].bar(segment_stats.index, segment_stats.values, colorskyblue) axes[1, 0].set_title(RFM用户分层数量) # 子图4关联规则置信度 axes[1, 1].bar(range(len(rules.head(10))), rules.head(10)[confidence]) axes[1, 1].set_title(Top10关联规则置信度) plt.tight_layout() plt.savefig(output/analysis_dashboard.png, dpi150) plt.show()逻辑说明这套 2×2 布局把四条分析线的核心图浓缩到一张画布ax坐标对应第一个子图是左上、第二个是右上、第三个左下、第四个右下。每个子图独立设置标题和坐标轴。autopct%.1f%%在饼图上显示百分比到小数一位让类目占比更能一目了然。参数上figsize(14, 10)是打印友好的宽高比tight_layout()在这里很关键因为 4 个子图同时渲染时标签容易互相重叠不调用的话图上文字几乎必会挤在一起。保存 dashboard 图后你最后生成的使用教程说明文档里放这张图再加几条结论就是一个完整交付。5. 避坑与排查这套系统最容易翻车的 5 个环节5.1 中文乱码图上所有文字变成方块或问号现象是运行代码后图表标题和轴标签显示成方块或者直接报UserWarning: Glyph 24394 missing from current font。原因是 matplotlib 默认字体不含中文字符而系统可用中文字体的名称在各平台上不一样。解决方法是开头就设置plt.rcParams[font.sans-serif] [SimHei, Microsoft YaHei]同时设置axes.unicode_minusFalse。如果设置后仍然报缺失字形说明系统里没有 SimHei需要改成 macOS 的PingFang SC或 Linux 的WenQuanYi Zen Hei。还有一个更稳妥的兜底方案用英文作为所有图表标签避免字体依赖但代价是报告本地化程度变低。5.2 时间列解析失败字符串日期导致按月份聚合结果为空现象是groupby(month)后得到的 Series 全部是 NaN 或只有一条记录。原因是 CSV 里的时间列格式不统一有的行是2024/3/1有的行是2024-03-01 12:00:00pandas 读取时解析出两种不同的 datetime 类型按月份分组时被拆散。解决方法是读取时用parse_dates[order_date]并配合format指定统一格式若原始数据已有多种格式先用pd.to_datetime(..., errorscoerce)强制解析解析失败的行直接置为 NaT再做过滤删除。我一般在数据清洗阶段就把时间列格式统一好后面分析模块里不再处理时间。5.3 关联规则运行极慢或内存溢出现象是apriori函数运行几分钟不结束或者报MemoryError。原因是购物篮矩阵过大商品种类上千种、订单上万条时稀疏矩阵的笛卡尔积组合数爆炸式增长。解决方法是先过滤低频商品再把订单量限制在最近 3 个月内然后跑规则。我实际调参时发现商品种类控制在 200 个以内min_support提高到 0.03 后运行时间能从 5 分钟降到 10 秒以内。另一方是矩阵类型用稀疏格式但 pandas 的unstack().fillna(0)生成的是稠密矩阵如果你想优化可以用 scipy 的稀疏矩阵构造购物篮不过课程数据量通常不需要。5.4 RFM 分层的 M 值被大客户拉平现象是M_flag几乎全是 0绝大多数用户被标记为低价值用户。原因是头部大客户的消费金额可能是普通用户的几十倍甚至上百倍直接把均值或中位数作为阈值时阈值被拉高导致超过一半用户落在“低金额”区间。解决方法是改用分位数而不是中位数作为切分边界比如用quantile(0.5)的效果其实接近中位数仍然被拉偏时改用三分位或四分位。我常用的做法是分别取recency、frequency、monetary的 40% 分位作为阈值让分组比例更均衡。答辩时可以解释一句“阈值可配置默认中位数是稳健选择我调整为分位数是因为数据分布右偏”这个细节通常会让评审觉得你真正理解了 RFM。5.5 结果表和图片路径不一致导致教程里的命令无法复现现象是别人按教程执行python scripts/sales_analysis.py时提示找不到output目录或orders.csv。原因是脚本中使用了绝对路径或者没有判断目录是否存在。解决方法是所有脚本统一用相对路径且入口脚本最早执行os.makedirs(output, exist_okTrue)。数据读取路径也要相对项目的根目录来写不要把 CSV 路径写死到/Users/xxx/data。另外如果教程说“在项目根目录运行python scripts/sales_analysis.py”那么脚本内路径务必以data/xxx.csv开头这样任何人在任意目录解压 zip 后都能复现。6. 进阶技巧把静态分析升级成自动化周报用参数化控制整个流程基础流程跑通后值得投入时间去做的进阶方向是“一键生成完整分析报告”。课程大作业如果能提供一个run_all.py入口连续执行数据清洗、销售分析、RFM 分层、关联规则、图表汇总五个流程最后输出一份包含所有图和结论的 Word/PDF 式说明文档整体完成度和工程习惯会有明显提升。这不复杂就是加一个主控脚本和几个参数开关。# run_all.py import os os.makedirs(output, exist_okTrue) # 在脚本中直接调用分析模块不通过命令行串行执行 from sales_analysis import run_sales_analysis from rfm_analysis import run_rfm_analysis from association_rules import run_association_rules if __name__ __main__: # 按依赖顺序执行先有干净数据再有分析 run_sales_analysis(min_date2024-01-01, max_date2024-12-31) run_rfm_analysis(reference_date2024-12-31, r_threshold0.4) run_association_rules(min_support0.02, min_confidence0.3)逻辑说明主控脚本用函数式封装替代命令行调用好处是参数可以在一个地方统一切换。reference_date2024-12-31作为 RFM 计算的参考日r_threshold0.4表示用 40% 分位而不是中位数切分 R 值你会发现这两个参数是调整结果形态最敏感的地方。我自己的习惯是固定参考日因为模拟数据的相对时间关系不变如果是真实线上数据参考日应该设为运行当天的日期。阈值参数不要轻易改到 0.3 以下用户分层会明显倾斜分布。关联规则这边我比较看重min_support至少要 0.02小于这个值会产生大量低质量规则报告页写满了也没说服力。最后讲一个验证方法每次调整参数后先对比output目录里图片的生成时间再看 RFM 分层的数量分布有没有明显变化。如果某个参数改了但分段几乎没有变化说明你的阈值选得不够敏感需要换切分方式。这套系统的核心价值不只是把数据变成图而是让看报告的人能从图中读出“该运营谁、该推什么”的结论。希望这个方案能帮你把课程设计做得扎实也让你自己真正有收获。本文还有配套的精品资源点击获取

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号