Olist Multi-Modal E-Commerce Analytics · 基于巴西电商平台 Olist 公开数据集的多模态数据分析与建模项目
覆盖 数据探索 · 地理空间 · 文本情感 · 评分预测 · 客户价值细分 · 生命周期价值预测 · 客户流失 七大分析维度,融合统计挖掘、机器学习、深度学习与客户分析模型(RFM / K-Means / BTYD),是一套完整的跨境电商用户与运营分析。
| 项目 | 命名 |
|---|---|
| 中文名(推荐) | Olist 电商多模态智能分析 |
| 英文名 | Olist Multi-Modal E-Commerce Analytics |
| 缩写 | OMMA |
| 原工作目录名 | 9.跨境电商巴西Olist多模动态分析 |
“多模态”体现在项目同时处理 表格数据(订单/支付/商品)、文本数据(评论)、地理空间数据(邮编/经纬度) 与 时间序列(订单趋势) 四类异构数据,并采用多种模型分别建模,最终统一服务于“用户价值与运营优化”这一业务目标。
Olist 是巴西的一家新兴电子商务平台(创立于 2015 年),为巴西各地中小商家提供在线销售、客户支持与售后管理服务,已进驻 Walmart、Amazon、MercadoLivre、Americanas 等大型电商平台。
本项目以 Kaggle 上 Olist 发布的 2016–2018 年约 10 万笔订单 的公共数据集为分析对象,结合巴西 GDP 区域经济数据与州级 GeoJSON 地理数据,围绕用户消费行为、客户价值与运营优化展开全链路分析:
- 探索电商用户的基础画像与消费行为规律;
- 从地理维度洞察订单分布、物流时效、运费与区域经济差异;
- 基于文本评论与用户评分,构建情感分析与评分预测模型;
- 通过 RFM 与聚类进行客户价值细分;
- 基于 BTYD 模型预测客户生命周期价值(CLV)与存活概率;
- 分析客户流失并给出精细化运营建议。
| 数据 | 来源 | 说明 |
|---|---|---|
| Olist 巴西电商公开数据集 | Kaggle - Brazilian E-Commerce Public Dataset by Olist | 2016–2018 年约 10 万笔订单,含客户、卖家、商品、订单、支付、评论、地理定位 8 张关联表 |
| 巴西 GDP 数据 | IBGE / 公开统计 | 全国与各州 GDP,用于区域经济水平与消费能力关联分析 |
| 巴西州界 GeoJSON | 公开地理数据 | 用于 choropleth 分级统计地图与地理空间可视化 |
主要数据表(见 data/olist_public_dataset/):
olist_customers_dataset.csv— 客户信息(含邮编前缀、城市、州)olist_geolocation_dataset.csv— 邮编前缀对应的经纬度坐标olist_order_items_dataset.csv— 订单明细(商品、价格、运费、时效)olist_order_payments_dataset.csv— 支付方式与支付金额olist_order_reviews_dataset.csv— 评论评分与评论文本(葡语)olist_orders_dataset.csv— 订单主表(下单/批准/送达时间、状态)olist_products_dataset.csv— 商品信息(类别、尺寸、重量等)olist_sellers_dataset.csv— 卖家信息
各表通过
order_id、customer_id、product_id、seller_id等唯一标识关联,整体 ER 关系见export/exploration/Olist数据集关系图.png。
| # | 模块 | 文件 | 核心内容 | 关键方法 / 模型 |
|---|---|---|---|---|
| 1 | 基础数据探索 | 2.基础数据探索.ipynb |
数据集概览、各州/城市客户分布、关系图、choropleth 地图 | MySQL 查询、Plotly、GeoJSON |
| 2 | 地理空间分析 | 1.地理空间分析.ipynb |
CEP 邮编体系、订单/收入/运费/配送时效/延迟的地域分布 | Holoviews、Datashader、folium、墨卡托投影 |
| 3 | 反馈评分预测 | 3.反馈评分预测.ipynb |
基于评论文本预测评分(好评/差评),多模型对比 | TF-IDF、朴素贝叶斯、SVM、LR、RF、XGBoost、LSTM |
| 4 | 客户价值细分 | 4.客户价值细分.ipynb |
RFM 分群、客户留存、新客比率、价值矩阵 | RFM、K-Means 聚类、RFM 分箱 |
| 5 | 客生价值预测 | 5.客生价值预测.ipynb |
客户生命周期价值预测、存活概率、未来交易预测 | BTYD:MBG/NBD + Gamma-Gamma(lifetimes) |
| 6 | 评论情感分析 | 6.评论情感分析.ipynb |
葡语评论情感分析、词云、正负面分布、时空热力图 | NLTK、WordCloud、分类模型、folium |
| 7 | 客户流失率 | data/客户流失率.ipynb |
客户分层流失率、资源分配失衡、预算优化建议 | 分层分析、双轴可视化 |
另含一份完整消费行为分析报告:
export/Olist/OlistReport.ipynb(含 PDF 版),从消费趋势、用户画像、消费行为、复购回购、评分与时效关系到 RFM 用户分群,系统总结了 Olist 用户消费行为特点并给出运营建议。
| 类别 | 技术 |
|---|---|
| 语言 / 环境 | Python 3.9 · Jupyter Notebook |
| 数据处理 | pandas · numpy · scipy |
| 数据可视化 | matplotlib · seaborn · plotly · folium · holoviews · datashader · bokeh |
| 机器学习 | scikit-learn · XGBoost · LightGBM |
| 深度学习 | TensorFlow 2.18 / Keras(LSTM) |
| 客户分析 | lifetimes(MBG/NBD、Gamma-Gamma) |
| 自然语言处理 | NLTK · WordCloud |
| 数据库 | MySQL(PyMySQL)· SQLAlchemy |
| 外部工具 | Tableau(消费行为报告可视化) |
完整依赖清单见 requirements.txt。
.
├── 1.地理空间分析.ipynb # 地理空间分析
├── 2.基础数据探索.ipynb # 基础数据探索
├── 3.反馈评分预测.ipynb # 反馈评分预测(含 LSTM)
├── 4.客户价值细分.ipynb # 客户价值细分(RFM + K-Means)
├── 5.客生价值预测.ipynb # 客生价值(CLV)预测(BTYD)
├── 6.评论情感分析.ipynb # 评论情感分析
├── streamlit_app.py # Streamlit 可视化看板
├── config.py # 全局配置(数据路径 / 数据库连接)
├── .env.example # 环境变量模板(数据库凭据等)
├── requirements.txt # Python 依赖清单
├── data/ # 原始数据与中间数据
│ ├── 客户流失率.ipynb # 客户流失率分析
│ ├── processed_orders.csv # 处理后的订单数据
│ ├── basic_data/ # 基础数据(含 GeoJSON / GDP)
│ ├── olist_public_dataset/ # Olist 原始 8 张数据表
│ ├── Real GDP for Brazil/ # 巴西 GDP 数据
│ └── ...
├── export/ # 全部输出成果(图表 / HTML / 报告)
│ ├── exploration/ # 探索分析图
│ ├── geospatial/ # 地理空间分析图
│ ├── feedback_rating/ # 评分预测成果
│ ├── lifetime_value/ # CLV 预测成果
│ ├── sentiment/ # 情感分析成果
│ ├── Olist/ # 完整消费行为分析报告(ipynb/md/pdf)
│ └── Visual Dashboard/ # 可视化仪表板截图
└── scripts/ # 可复用工具模块
├── ml_utils/ # 机器学习工具(分类器分析、聚类等)
├── text_utils/ # 文本处理工具
├── viz_utils/ # 可视化工具
├── custom_transformers/ # 自定义 Transformer
└── unittest.py # 单元测试
# 1. 创建虚拟环境(建议 Python 3.9)
python -m venv .venv
# Windows
.venv\Scripts\activate
# 2. 安装依赖
pip install -r requirements.txt
# 3. 启动 Jupyter
jupyter notebook
# 4. 启动 Streamlit 可视化看板(可选)
streamlit run streamlit_app.pyStreamlit 可视化看板(streamlit_app.py):一键式数据看板,含 6 个模块:
| 模块 | 功能 |
|---|---|
| 📊 总览 | 核心 KPI 与月度订单/销售趋势、订单状态分布 |
| 🗺️ 地理分析 | 巴西各州客户/订单/销售额/评分/时效 choropleth 地图 |
| 📦 商品分析 | 热销品类、品类销售额占比、价格与运费分布 |
| 💳 支付分析 | 支付方式占比、各支付方式金额、信用卡分期分布 |
| ⭐ 评分与评论 | 评分分布、评分随配送时效变化、各州平均评分 |
| 👤 客户价值 | RFM 用户分群(重要/一般价值等 8 类)与人均金额 |
首次运行约需 20~40 秒加载数据,之后自动缓存,切换页面即时响应。
运行说明与注意事项:
- 数据库配置(
2.基础数据探索.ipynb):该 Notebook 从 MySQLbasic_data库读取数据,连接参数统一由config.py管理,通过项目根目录.env文件配置(模板见.env.example),代码中不再硬编码口令。 - 数据路径:各 Notebook 统一通过
config.py提供的数据路径常量(如GEOJSON_PATH)引用,不再硬编码绝对路径;数据目录规范见data/README.md。 6.评论情感分析.ipynb使用葡语停用词,需先执行nltk.download('stopwords')等资源下载。3.反馈评分预测.ipynb训练 LSTM 需要 TensorFlow(Windows 下约 400MB)。若暂不使用该 Notebook,或只需运行streamlit_app.py,可临时注释掉requirements.txt中的tensorflow==2.18.0以加快安装。- 安装加速(国内镜像):建议使用
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple;requirements.txt注释已改为纯 ASCII,避免 Windows 中文系统以 GBK 读取时出现UnicodeDecodeError。
- 地域高度集中:消费用户主要分布在东南部沿海人口密集、经济发达州,圣保罗州占比约 42%;北部/东北部运费更高、配送更慢、评分更低。
- 二八法则显著:约 17% 的头部大额用户贡献了 50% 的消费金额。
- 低频小额消费:97% 的用户仅消费一次,2017 年度复购率仅约 2.78%,用户忠诚度低、生命周期短。
- 订单金额右长尾:90% 的订单消费金额低于 300 雷亚尔,90% 的订单仅购买 1 件商品。
- 评分两极分化:约 58.86% 的用户评 5 分,但评分 ≤ 3 分占比达 21.44%,需结合文本情感进一步洞察。
- 物流是瓶颈:平均收货用时约 12.5 天,北部/东北部地区时效与运费问题突出,是运营优化重点。
- 清理硬编码路径与凭据:
2.基础数据探索.ipynb的 MySQL 连接与 GeoJSON 绝对路径已迁移至config.py+.env(模板见.env.example),代码中不再出现数据库口令与F:/...绝对路径。 - 标注随机示例代码:
4.客户价值细分.ipynb中的 3D 曲面与等高线示意图已添加「方法示例」标注,明确其使用数学函数 + 随机噪声模拟,非真实订单数据。 - 补齐依赖清单:
requirements.txt已固定shap==0.46.0、tabulate==0.9.0,移除“需补装”标注。 - 统一数据目录:清理无关的
data/data/MNIST/与冗余副本export/exploration/brazilian_ecommerce_dataset.csv;新增data/README.md明确数据目录规范。
- 统一指标体系:将各 Notebook 的结论收敛为北极星指标 + 漏斗(曝光→下单→复购→留存),并把 RFM 分群映射到具体运营动作,形成可执行策略。
- 补充时间序列预测:目前仅做趋势描述,可引入 Prophet / ARIMA / LSTM 对销售额与订单量做滚动预测与季节效应分解(黑五、年末大促)。
- 情感分析升级:当前为二分类(正/负),可升级为 1–5 分多分类,或与评分预测模块统一建模;对葡语可用预训练模型(如 BERTimbau)提升效果。
- 地理分析深化:结合时效与运费数据输出仓储选址 / 物流网络优化建议,量化北部地区改进后的收益预期。
- 建立评估与版本基准:将
scripts/unittest.py扩展为统一模型评估脚本,配合 MLflow 管理模型版本与指标。 - 流水线化:把“数据 → 分析 → 可视化 → 报告”固化为可定时重跑的流水线(如 Airflow / cron),使
export/输出可持续更新。 - 目录清理:
data/data/MNIST/与电商分析无关,建议移出项目,减小仓库体积。
- 数据库口令、API Key 一律不入库,改用环境变量注入。
- 数据仅用于学习与研究,请遵守 Olist 数据集与 Kaggle 的使用条款。
- Kaggle:Brazilian E-Commerce Public Dataset by Olist
- Correios(巴西邮政)— CEP 邮编体系说明
- Olist 完整消费行为分析报告:
export/Olist/OlistReport.md
⚠️ 本项目数据与分析结果仅用于学习研究用途,不代表任何商业平台的真实运营数据。