Skip to content

MeaFew/ecommerce-user-analytics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

E-commerce User Behavior Analytics

基于 2,900 万条真实淘宝用户行为记录的完整数据分析管线
覆盖数据工程 · SQL 分析 · 统计建模 · A/B 测试 · 交互式交付

CI Python Ruff DuckDB Streamlit GitHub Pages License

中文 | English


项目亮点

  • 量级:在单机上以 ~0.4 秒完成 2,900 万行数据的清洗与特征工程(Polars 向量化执行)
  • 工程化:dbt 数据模型分层(staging → intermediate → marts)+ 10+ 项数据质量测试 + GitHub Actions 四检查(lint / sql-lint / test / docker-build)
  • 方法论完整:从用户留存、转化漏斗、RFM 分群到 A/B 测试、流失预测、协同过滤推荐,覆盖用户生命周期全链路
  • 生产级思考:每个分析模块均附带「局限 → 生产化路径」的完整推演,而非停留在 toy example

数据

属性
来源 阿里云天池 —「淘宝用户行为」公开数据集
规模 287,004 用户 · 2,584,623 商品 · 5,132 品类 · 29,128,402 条记录
时间窗口 2017-11-24 ~ 2017-12-03(共 10 天)
行为类型 pv(浏览)· buy(购买)· cart(加购)· fav(收藏)

秒级时间戳支持精细的行为序列建模;2,900 万行规模为验证 Polars / DuckDB 等现代分析工具的大吞吐性能提供了充足的实验场。

数据集统计特征(社区参考值)

本数据集为开放数据集(非竞赛),以下指标来自社区常见分析结果,供数据规模与业务水平参考:

指标 说明
总浏览量(PV) 3,431,900 10 天累计
总访客数(UV) 37,376 去重用户数
跳失率 5.87% 仅浏览无其他行为
浏览 → 购买转化率 2.2% 整体转化
浏览 → 加购转化率 58.8% 商品详情页引导效果
加购 → 购买转化率 38.9% 购物车召回潜力
复购率 65.8% 购买 2 次及以上用户占比

快速开始

git clone https://github.com/MeaFew/ecommerce-user-analytics.git
cd ecommerce-user-analytics

# 下载数据集(GitHub Releases,约 264MB)
bash download_data.sh

# 验证环境(lint + test + format-check + audit)
make verify

# 运行完整分析管线
make all

# 启动交互式看板
make dashboard

核心指标一览

指标 业务解读
日均 DAU 205,091 10 天核心窗口期间活跃用户规模稳定
PV → 购买转化率 2.24% 典型电商水平,优化空间在于首页推荐精准度
PV → 加购转化率 6.21% 商品详情页设计对加购引导有效
加购 → 购买转化率 36.04% 购物车召回(短信/推送)是高 ROI 优化点
次日留存率 73.54% 新用户首周留存健康
零转化商品占比 37.2%(960,744 件) 长尾商品流量枯竭,需优化推荐长尾分发策略

完整业务洞察报告:reports/business_insights_report.md


技术架构

                  ┌─────────────────┐
                  │  UserBehavior   │
                  │   CSV (29M)     │
                  └────────┬────────┘
                           │ Polars ETL (~0.4s)
                           ▼
┌─────────────────────────────────────────────────────────────┐
│                      DuckDB / Parquet                        │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │ SQL Analysis│  │ dbt Models  │  │   PySpark (MLlib)   │  │
│  │ 7 scripts   │  │ staging →   │  │   ALS 矩阵分解      │  │
│  │             │  │ intermediate│  │   (分布式)          │  │
│  │             │  │ → marts     │  │                     │  │
│  └──────┬──────┘  └──────┬──────┘  └──────────┬──────────┘  │
└─────────┼────────────────┼────────────────────┼─────────────┘
          │                │                    │
          ▼                ▼                    ▼
   ┌────────────┐   ┌────────────┐      ┌────────────┐
   │  XGBoost   │   │  Streamlit │      │  Jupyter   │
   │ Churn Model│   │ Dashboard  │      │ Notebooks  │
   │ (11 feats) │   │ (KPI/R/F/M)│      │ (EDA/AB/   │
   │ AUC = 0.84 │   │            │      │  Cohort)   │
   └────────────┘   └────────────┘      └────────────┘

十大分析模块

# 模块 核心技术 产出价值
1 用户留存分析 Self-join + 窗口函数 ROW_NUMBER / LAG D1/D3/D7 留存曲线,识别流失拐点
2 转化漏斗 CTE + 条件聚合 + 路径分类 四步漏斗(PV → 收藏/加购 → 购买),定位最大 leak
3 RFM 用户分群 NTILE(5) 分箱 + 生命周期状态迁移 8 类用户画像(冠军/忠诚/新客/流失预警等)
4 A/B 测试框架 双比例 Z 检验 · 卡方检验 · Cohen's h · 95% CI 完整的实验统计管线:样本量计算 → 同质性校验 → 效应量估计
5 流失预测 XGBoost vs 逻辑回归 · 11 维特征工程 · ROC-AUC AUC = 0.84,精准识别高风险用户
6 推荐系统 UserCF(余弦相似度)· ALS(PySpark MLlib) 协同过滤 + 矩阵分解双方案对比
7 异常检测 3σ 规则 + 移动平均 自动化日报 + 异常行为告警
8 Cohort & LTV cohort 留存热力图 · 行为加权价值估计 用户群组生命周期价值追踪
9 交互看板 Streamlit + Plotly · KPI 卡片 · 漏斗 · RFM 产品/运营团队的自助分析工具
10 数据工程 dbt 模型分层 · 10+ 项数据质量测试 可版本控制的分析数据管线

技术栈

层级 工具 选型理由
数据处理 Polars(Rust 核心)· Pandas · PySpark Polars 在 29M 行数据上比 Pandas 快 60 倍;PySpark 用于 ALS 分布式矩阵分解
SQL 引擎 DuckDB 零配置、列式 OLAP,单节点即可秒级聚合 29M 行
数据工程 dbt 模型版本化、血缘追踪、自动化测试,将分析 SQL 从脚本升级为工程化管线
统计建模 scikit-learn · XGBoost · SciPy · statsmodels XGBoost 处理高维稀疏特征;statsmodels 提供经典统计推断
可视化 Matplotlib · Seaborn · Plotly Plotly 交互式图表直接嵌入 Streamlit
交付 Streamlit · Apache Superset · Jupyter Streamlit 做轻量自助看板;Superset(Docker)做企业级 BI 探查
质量保障 pytest · ruff · sqlfluff · GitHub Actions CI 全绿 = 代码规范 + SQL 规范 + Docker 构建三重校验

局限与生产化路径

局限 影响 生产化方案
约 10 天有效窗口 无法观察月度季节性;D7+ 留存右删失 扩展至 ≥90 天数据,引入 Prophet / ARIMA 预测
无金额字段 GMV、ARPU、CLV 无法计算;RFM 退化为 RF 关联订单/交易表,补全 monetary 维度
无用户属性 缺失 demographics、设备、渠道分段 关联用户画像表,支持多维 cohort 分析
A/B 测试为模拟 基于用户 ID 哈希的随机化分组 哈希随机化 + SRM 校验 + CUPED 方差缩减
单节点执行 DuckDB + 本地 Parquet Hive / Spark on 分区 Parquet + Airflow 调度

A/B 测试框架实现了完整的统计管线(样本量计算 → 同质性校验 → 双比例 Z 检验 → Cohen's h → 95% CI)——哈希分组是真实实验元数据不可获取时的有效随机化策略,统计方法论可直接迁移至生产实验平台(如内部 AB 平台或 Optimizely)。


项目结构

ecommerce-user-analytics/
├── scripts/                      # Python 工具脚本
│   ├── preprocess.py             #   Polars ETL(~0.4s / 29M rows)
│   ├── pipeline.py               #   完整分析管线编排
│   ├── run_sql.py                #   DuckDB SQL 批量执行
│   ├── validate_data.py          #   数据质量校验
│   └── benchmark_preprocessing.py #  Polars vs Pandas 性能基准
│
├── notebooks/                    # Jupyter 分析笔记本(5 份)
│   ├── 01_eda_and_visualization.ipynb
│   ├── 02_user_churn_prediction.ipynb
│   ├── 03_ab_test_analysis.ipynb
│   ├── 04_recommendation_system.ipynb
│   └── 05_cohort_and_ltv.ipynb
│
├── sql/                          # SQL 分析脚本(7 份)
│   ├── 01_database_setup.sql     #   Schema + 索引 + 视图
│   ├── 02_user_retention.sql     #   留存分析(D1/D3/D7)
│   ├── 03_conversion_funnel.sql  #   漏斗 + 路径分析
│   ├── 04_rfm_model.sql          #   RFM 分群
│   ├── 05_ab_test_framework.sql  #   A/B 测试数据准备
│   ├── 06_anomaly_detection.sql  #   异常检测(3σ 规则)
│   └── 07_product_analysis.sql   #   商品与品类分析
│
├── dbt/                          # dbt 数据模型 + 测试
│   ├── models/staging/
│   ├── models/intermediate/
│   └── models/marts/
│
├── pyspark/                      # PySpark 分布式计算(4 脚本)
├── dashboard/                    # Streamlit 交互看板
├── superset/                     # Apache Superset BI 配置
│   ├── superset_config.py        #   Superset 自定义配置
│   └── add_duckdb.py             #   DuckDB 数据源自动注册脚本
├── images/                       # 生成的图表
├── reports/                      # 分析报告
├── docs/                         # 架构决策记录(ADR)
├── docker-compose.superset.yml   # Superset Docker Compose 配置
├── Makefile                      # 工作流编排
└── requirements.txt

BI 看板(Apache Superset)

除了 Streamlit 轻量看板,项目还集成了 Apache Superset(Docker)作为企业级 BI 探查工具:

# 启动 Superset(需 Docker)
docker compose -f docker-compose.superset.yml up -d

# 首次启动约需 1–2 分钟完成初始化
# 访问 http://localhost:8088
# 用户名: admin / 密码: admin

已预配置内容:

  • DuckDB 数据源自动连接(analytics.duckdb
  • SQL Lab 可直接对 2,900 万行数据执行 Ad-hoc 查询
  • Explore 界面支持拖拽式图表创建(日活趋势、转化漏斗、品类分布等)

为什么同时保留 Streamlit + Superset?

维度 Streamlit Apache Superset
定位 轻量自助看板 企业级 BI 探查
使用场景 固定指标监控 Ad-hoc 分析、下钻、多维切片
开发方式 Python 代码 零代码拖拽 + SQL
受众 产品经理/运营 数据分析师/管理层

生产环境中,Streamlit 适合嵌入业务系统的固定看板,Superset 适合分析师自助探索。两者互补而非替代。


相关资源

  • docs/ADR.md — 架构决策记录:为什么选 DuckDB、Polars、dbt,以及扁平化目录结构的设计考量
  • CONTRIBUTING.md — 本地环境搭建、开发工作流、lint 规则与 commit 规范
  • sql/README.md — SQL 分析模块指南与数据库兼容性对照表

相关项目

项目 仓库 简介
营销归因与预算优化 MeaFew/marketing-attribution-mmm MMM + 多触点归因 + 预算优化
信用风险评分 MeaFew/credit-risk-scoring WOE/IV + XGBoost/LightGBM + SHAP 可解释性
多元时序预测 MeaFew/multivariate-timeseries-forecasting LSTM / Transformer / XGBoost 时序预测对比

许可证

数据集遵循阿里云天池的使用条款。代码采用 MIT License,仅供学习交流使用。

About

E-commerce User Behavior Analytics Platform | 29M real user records | SQL + Python + PySpark + dbt + Streamlit

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors