基于阿里天池「淘宝母婴购物数据集」的端到端分析:从数据质量体检、生意节奏、品类结构, 到异常订单识别与囤货行为预测模型,输出可落地的运营建议。
11 月 11 日当日件数达到平日的 5.19 倍,且 2013、2014 两年 11 月均占全年件数的 30% 左右,规律稳定可复用。反观 618 仅 0.64 倍,说明在当时的淘系母婴品类中并不成立——结论不能照搬其他平台的常识。
尿裤/湿巾与奶粉/辅食合计贡献 62% 的件数、65% 的笔数,但两者的购买逻辑完全不同:尿裤单笔 4.1 件属囤货型,奶粉单笔 1.5 件属高频补货型,运营策略应区别设计。
单笔最高达 10,000 件(童装/童鞋),一笔即占全部件数的 13.1%。这类订单更可能是批发或非真实消费,若不在分析前剥离,会显著拉高所有「平均值」类指标——本报告已做剔除对照。
卡方检验 p=0.79、Cramér's V=0.05,无法拒绝独立性假设。这是一个「没有差异」的结论,但它说明:基于性别的差异化推荐在本数据上缺乏依据,不宜作为运营抓手。
逻辑回归在 5 折交叉验证下 ROC-AUC 达 0.778,PR-AUC 是随机基线的 3.4 倍。首要预测信号是「商品属性维度数」与品类,时间因素影响较弱。
人均仅 1.0 笔交易的样本结构决定了「用户生命周期/RFM/性别预测」不可能成立(实测 AUC 0.493,等同随机)。识别出「哪些分析做不了」,和做出分析同样重要。
在动手分析前,先确认数据能回答什么问题、不能回答什么问题。
| 检查项 | 结果 | 说明 |
|---|---|---|
| 交易表行数 | 29971 | NaN |
| 交易表用户数 | 29944 | NaN |
| 交易表商品数 | 28422 | NaN |
| 交易表时间跨度 | 2012-07-02 ~ 2015-02-05 | NaN |
| 交易表日期缺失 | 0 | NaN |
| 交易表属性为空 | 144 | property 字段无内容 |
| 交易表购买量异常(<=0) | 0 | NaN |
| 宝宝表行数 | 953 | NaN |
| 宝宝表生日缺失 | 0 | NaN |
| 宝宝表性别分布 | 0:489 / 1:438 / 2:26 | 0=女宝 1=男宝 2=未知(天池官方说明) |
| 宝宝表生日异常(早于2000年) | 1 | NaN |
| 人均交易笔数 | 1.0009 | NaN |
| 有复购的用户数 | 25 | 该样本按行抽样,复购用户极少 |
| 指标 | 数值 |
|---|---|
| 交易笔数 | 29971 |
| 购买总件数 | 76250 |
| 覆盖用户数 | 29944 |
| 覆盖商品数 | 28422 |
| 一级类目数 | 6 |
| 二级类目数 | 662 |
| 时间跨度 | 2012-07-02 ~ 2015-02-05 |
| 平均单笔件数 | 2.54 |
| 单笔件数中位数 | 1 |
| 有宝宝档案的用户 | 952 |
| 完整年度交易笔数(2013-2014) | 24777 |
gender 编码依天池官方 Overview 说明为 0=女宝、1=男宝、2=未知;
部分中文二手资料编码相反。本报告所有性别相关结论均做对称表述,不依赖该映射方向。28、50008168),便于核对。
回答三件事:生意在增长吗?一年中什么时候最好卖?大促到底能拉动多少?
2014 年购买件数同比 +19.9%,交易笔数同比增长,处于典型的行业扩张期。
两个完整年度的曲线形态高度一致:11–12 月为大促峰(约 31% + 20%),6 月为次高峰,2 月为全年低谷(春节效应)。
| 大促 | 覆盖天数 | 总件数 | 大促日均件数 | 平日日均件数 | 拉动倍数 | 件数占全期比重(%) |
|---|---|---|---|---|---|---|
| 双11 | 3 | 1250 | 416.7 | 80.2 | 5.19 | 1.65 |
| 双12 | 3 | 544 | 181.3 | 80.2 | 2.26 | 0.72 |
| 618 | 2 | 103 | 51.5 | 80.2 | 0.64 | 0.14 |
| 日期 | 星期 | 交易笔数 | 购买件数 |
|---|---|---|---|
| 2014-11-13 | 周四 | 49 | 10061 |
| 2013-12-20 | 周五 | 35 | 2841 |
| 2014-09-20 | 周六 | 45 | 2804 |
| 2015-01-12 | 周一 | 45 | 1552 |
| 2013-07-01 | 周一 | 26 | 1032 |
| 2014-10-21 | 周二 | 50 | 804 |
| 2014-11-11 | 周二 | 454 | 774 |
| 2014-07-02 | 周三 | 38 | 645 |
| 2013-02-22 | 周五 | 20 | 631 |
| 2014-10-07 | 周二 | 44 | 568 |
从品类集中度与购买逻辑两个角度,判断商品结构是否健康。
| 品类 | 交易笔数 | 购买件数 | 商品数 | 笔数占比(%) | 件数占比(%) | 单笔平均件数 |
|---|---|---|---|---|---|---|
| 尿裤/湿巾 | 6963 | 28545 | 6580 | 23.23 | 37.44 | 4.10 |
| 童装/童鞋 | 4834 | 19763 | 4457 | 16.13 | 25.92 | 4.09 |
| 奶粉/辅食 | 12494 | 18792 | 12046 | 41.69 | 24.65 | 1.50 |
| 玩具/童车 | 1203 | 3666 | 1176 | 4.01 | 4.81 | 3.05 |
| 喂养/洗护 | 2367 | 3245 | 2115 | 7.90 | 4.26 | 1.37 |
| 妈妈专区 | 2110 | 2239 | 2048 | 7.04 | 2.94 | 1.06 |
41.7% 的交易笔数、12,046 个商品,但单笔仅 1.5 件——典型的「高频补货 + 极度分散」的品类,是平台流量的基本盘。
笔数占比 23.2%,却贡献 37.4% 的件数,单笔高达 4.1 件——典型的囤货型品类,是平台 GMV 的压舱石。
件数占比 25.9%、笔数占比 16.1%,单笔 4.09 件,规模仅次于尿裤,通常容易被忽视。
| 指标 | 数值 |
|---|---|
| CR5(前5类目件数占比) | 31.83% |
| CR10 | 44.47% |
| CR20 | 56.13% |
| 类目总数 | 662 |
| HHI(赫芬达尔指数) | 394.8 |
| 贡献后50%件数的类目数 | 14 |
购买量是理解「囤货 vs 即时消费」的核心,也是识别异常数据的最佳切入点。
| 指标 | 数值 |
|---|---|
| 平均数 | 2.54 |
| 中位数 | 1.00 |
| 众数 | 1.00 |
| 标准差 | 63.99 |
| P90 | 2.00 |
| P99 | 13.00 |
| 最大值 | 10000.00 |
| 单件购买占比(%) | 87.87 |
| 囤货(≥3件)占比(%) | 6.13 |
| 偏度 | 133.46 |
| 峰度 | 20133.78 |
| 品类 | 交易笔数 | 平均单笔件数 | 囤货笔数 | 囤货笔数占比(%) |
|---|---|---|---|---|
| 尿裤/湿巾 | 6963 | 4.10 | 590 | 8.47 |
| 童装/童鞋 | 4834 | 4.09 | 493 | 10.20 |
| 玩具/童车 | 1203 | 3.05 | 337 | 28.01 |
| 奶粉/辅食 | 12494 | 1.50 | 330 | 2.64 |
| 喂养/洗护 | 2367 | 1.37 | 72 | 3.04 |
| 妈妈专区 | 2110 | 1.06 | 15 | 0.71 |
平均 4.1 件,8.47% 的订单一次买 ≥3 件,是唯一符合「囤货」直觉的品类。
28.0% 的订单买 ≥3 件(比例最高),但平均只有 3.05 件——多为整套/组合装购买,属于商品结构特征而非囤积行为。
仅 2.64% 的订单买 ≥3 件,平均 1.5 件。奶粉单价高、保质期敏感,用户倾向少量多次购买。
| 排名 | user_id | auction_id | cat1_name | buy_mount | 日期 | 占全部件数比重(%) | 累计占比(%) |
|---|---|---|---|---|---|---|---|
| 1 | 2288344467 | 39769942518 | 童装/童鞋 | 10000 | 2014-11-13 | 13.11 | 13.11 |
| 2 | 117730165 | 20409520643 | 尿裤/湿巾 | 2800 | 2013-12-20 | 3.67 | 16.78 |
| 3 | 173701616 | 36505037679 | 奶粉/辅食 | 2748 | 2014-09-20 | 3.60 | 20.38 |
| 4 | 1945590674 | 3920805463 | 尿裤/湿巾 | 1500 | 2015-01-12 | 1.97 | 22.35 |
| 5 | 32141414 | 9716351898 | 尿裤/湿巾 | 1000 | 2013-07-01 | 1.31 | 23.66 |
| 6 | 119395773 | 21753712913 | 尿裤/湿巾 | 700 | 2014-10-21 | 0.92 | 24.58 |
| 7 | 300205516 | 8728039815 | 尿裤/湿巾 | 600 | 2013-02-22 | 0.79 | 25.37 |
| 8 | 300857121 | 38276597770 | 尿裤/湿巾 | 600 | 2014-07-02 | 0.79 | 26.16 |
| 9 | 462029374 | 7398446291 | 尿裤/湿巾 | 500 | 2012-11-19 | 0.66 | 26.82 |
| 10 | 1671630112 | 41020683325 | 尿裤/湿巾 | 498 | 2014-10-07 | 0.65 | 27.47 |
| 指标 | 数值 |
|---|---|
| 全部订单平均单笔件数 | 2.54 |
| 剔除 Top10 大单后的平均单笔件数 | 1.85 |
| Top10 大单合计件数 | 20946 |
| Top10 大单占全部件数比重 | 27.5% |
| Top10 大单笔数占比 | 0.033% |
| 最大单笔件数 | 10000 |
| 最大单笔所属品类 | 童装/童鞋 |
| 最大单笔日期 | 2014-11-13 |
结合宝宝生日与性别,观察「孩子月龄」是否驱动品类选择。
| birth_year | 宝宝数 | 占比(%) |
|---|---|---|
| 2002 | 1 | 0.11 |
| 2003 | 3 | 0.32 |
| 2004 | 4 | 0.42 |
| 2005 | 3 | 0.32 |
| 2006 | 10 | 1.05 |
| 2007 | 20 | 2.10 |
| 2008 | 36 | 3.78 |
| 2009 | 51 | 5.36 |
| 2010 | 84 | 8.82 |
| 2011 | 146 | 15.34 |
| 2012 | 183 | 19.22 |
| 2013 | 219 | 23.00 |
| 2014 | 170 | 17.86 |
| 2015 | 22 | 2.31 |
| 月龄段 | 喂养/洗护 | 奶粉/辅食 | 妈妈专区 | 尿裤/湿巾 | 玩具/童车 | 童装/童鞋 |
|---|---|---|---|---|---|---|
| 0-6月 | 2.70 | 0.78 | 0.56 | 0.75 | 0.13 | 1.89 |
| 7-12月 | 0.80 | 0.77 | 0.23 | 0.98 | 2.85 | 1.35 |
| 13-24月 | 0.43 | 0.89 | 1.42 | 1.12 | 1.46 | 0.97 |
| 25-36月 | 1.15 | 1.27 | 1.07 | 0.86 | 0.31 | 0.66 |
| 3-6岁 | 0.48 | 1.20 | 1.40 | 1.20 | 0.44 | 0.40 |
| 6岁以上 | 0.00 | 1.49 | 1.28 | 0.95 | 0.00 | 0.28 |
喂养/洗护偏好指数 2.70、童装/童鞋 1.89,新生儿阶段的需求高度集中在基础照护与衣着。
玩具/童车偏好指数 2.85,是整张表中最高值——宝宝开始有互动需求,玩具品类应在此阶段做重点推荐。
奶粉/辅食偏好指数 1.49,说明「儿童成长奶粉」的需求周期远长于婴儿阶段,容易被运营忽略。
| 指标 | 数值 |
|---|---|
| 卡方统计量 | 2.41 |
| 自由度 | 5 |
| p 值 | 0.7899 |
| 结论 | 无显著差异 (p>=0.05) |
| Cramér's V(效应量) | 0.051 |
| 样本量 | 929 |
property 字段被平台脱敏,但它仍然携带「商品描述丰富度」这一有效信号。
| 指标 | 数值 |
|---|---|
| 无属性记录的交易占比(%) | 0.48 |
| 平均属性维度数 | 8.68 |
| 属性维度数中位数 | 9.00 |
| 属性维度数最大值 | 21.00 |
| prop_key | 取值数 | 出现次数 | 平均每值出现次数 |
|---|---|---|---|
| 21458 | 8820 | 25930 | 2.9 |
| 1628665 | 64 | 24140 | 377.2 |
| 25935 | 4 | 14059 | 3514.8 |
| 21475 | 118 | 7789 | 66.0 |
| 13023209 | 6608 | 7636 | 1.2 |
| 1633959 | 5724 | 6571 | 1.1 |
| 32047 | 3 | 6436 | 2145.3 |
| 122217803 | 5 | 5900 | 1180.0 |
| 122217801 | 40 | 5351 | 133.8 |
| 22019 | 40 | 5136 | 128.4 |
| 22009 | 73 | 5028 | 68.9 |
| 1628348 | 3 | 4443 | 1481.0 |
| 22066 | 22 | 4409 | 200.4 |
| 1628366 | 4 | 4313 | 1078.2 |
| 2397831 | 11 | 3800 | 345.5 |
平均每条交易带 8.68 个属性维度,中位数 9,最大 21。属性越多,通常意味着商品规格越复杂、越可能是大包装或组合装。
取值仅 3–5 种的多为枚举型属性(如规格、段位);取值上千种的更接近品牌或型号标识(如属性键 21458 有 8,820 种取值)。
属性维度数在后续囤货预测中成为最重要的特征(重要性 0.304),说明被脱敏的字段依然有挖掘价值。
为什么是「囤货预测」而不是经典的「性别预测」?这是一个关于数据可行性的判断。
| 指标 | 数值 |
|---|---|
| 有性别标签的用户数 | 929 |
| 人均可用的交易记录数 | 1.0 |
| 性别预测 ROC-AUC | 0.4931 |
| 随机基线 AUC | 0.5 |
| 结论 | 接近随机水平,该抽样结构不支持性别预测建模 |
| 原因 | 每位标签用户仅有约 1 条行为记录,无法构造用户级行为特征 |
目标定义:预测单笔订单的购买数量是否 ≥ 3 件(正类占比 6.13%),用于库存预占、包材准备与物流资源调度。
特征设计(44 维,严格排除 buy_mount 相关字段以避免标签泄漏):月份正余弦周期编码、周末/大促月标记、年内天数、 商品属性维度数、6 个一级类目 one-hot、Top30 二级类目 one-hot。
| 指标 | 数值 |
|---|---|
| 样本量 | 29971 |
| 正类(囤货单)占比 | 6.13% |
| 特征维度 | 44 |
| 最优模型 | 逻辑回归 |
| ROC-AUC (5折CV) | 0.7782 |
| PR-AUC (5折CV) | 0.2101 |
| 最佳概率阈值 | 0.709 |
| 混淆矩阵 [[TN,FP],[FN,TP]] | [[26060, 2074], [1271, 566]] |
| 类别 | precision | recall | f1-score | support |
|---|---|---|---|---|
| 0 | 0.953 | 0.926 | 0.940 | 28134.000 |
| 1 | 0.214 | 0.308 | 0.253 | 1837.000 |
| accuracy | 0.888 | 0.888 | 0.888 | 0.888 |
| macro avg | 0.584 | 0.617 | 0.596 | 29971.000 |
| weighted avg | 0.908 | 0.888 | 0.898 | 29971.000 |
5 折交叉验证下 ROC-AUC = 0.778、PR-AUC = 0.210,而随机基线 PR-AUC 仅 0.061,提升 3.4 倍。
重要性 0.304,远超其他特征。商品描述越复杂,越可能是大包装或组合装——这是可解释的业务逻辑。
年内天数、月份周期合计重要性约 0.19,说明囤货更多由「买什么」而非「什么时候买」决定。
把上面的分析翻译成可执行的动作。
11 月贡献全年约 31% 的件数,双11 单日拉动 5.19 倍。建议把年度大促预算的绝对大头压在 11 月, 12 月延续长尾承接,6 月做常规月度活动即可——数据不支持把 618 当作年度节点来投入。
尿裤/湿巾:单笔 4.1 件、囤货属性强 → 适合做大包装、满减、组合囤货,围绕「一次买够」设计促销结构。
奶粉/辅食:单笔 1.5 件、12,046 个 SKU 极度分散 → 适合做订阅制、周期购、精准补货提醒,用复购锁定用户而非用折扣冲量。
0.03% 的订单贡献 27.5% 的件数,最大单笔 10,000 件。建议在数据平台侧设置单笔件数阈值告警, 并将这类订单在报表中单独列示;核心 KPI 建议以订单数 / 用户数为主口径,避免被个别订单绑架。
0–6 月推洗护与童装、7–12 月推玩具(偏好指数 2.85)、6 岁以上仍可推成长奶粉(1.49)。 月龄是比性别更有效的推荐维度——这一点已被数据验证。
卡方检验 p=0.79、效应量 0.05,性别与品类偏好在统计上无关联。把性别作为推荐特征或分群维度的收益极低,不如把资源投向月龄分层。
囤货预测模型可在订单生成时给出概率,识别出高概率囤货单(PR-AUC 0.21,是随机基线的 3.4 倍), 用于提前预占库存、准备大件包材,降低临时缺货与物流爆仓的风险。
主动交代边界,比假装没有边界更专业。
一条命令跑完全流程。
# 1. 安装依赖 pip install -r requirements.txt # 2. 一键运行完整流程(加载 → 清洗 → 指标 → 绘图 → 建模) python scripts/run_all.py # 3. 生成这份 HTML 报告 python scripts/build_report.py
mum-baby-analysis/
├── data/
│ ├── raw/ 原始数据(CSV)
│ └── processed/ 清洗后的数据集
├── src/ 可复用的分析模块
│ ├── config.py 路径、配色、中文类目字典
│ ├── data_loader.py 数据加载与质量体检
│ ├── preprocess.py 清洗、特征工程、属性解析
│ ├── analysis.py 业务指标计算(8 个分析模块)
│ ├── visualize.py 16 张图表的绘制函数
│ ├── modeling.py 特征工程与模型训练/评估
│ └── report.py 报告生成
├── scripts/
│ ├── run_all.py 一键运行全流程
│ └── build_report.py 生成 HTML 报告
├── notebooks/
│ └── mum_baby_analysis.ipynb 交互式分析笔记
└── reports/
├── figures/ 16 张图表
├── tables/ 24 份指标明细表
└── report.html 本报告
reports/tables/*.csv)都会落盘,报告中的每个数字都可以追溯到对应的 CSV,
方便复核与二次分析。