基于 Python (Pandas + Matplotlib + Seaborn) 的电商销售数据全流程分析项目,涵盖数据清洗、探索性分析(EDA)、用户画像、品类洞察及地区销售分析。
对约 56 万行 电子产品电商订单数据进行端到端分析,从原始数据清洗到可视化报告输出,挖掘销售趋势、用户行为特征及区域市场格局,为运营决策提供数据支持。
| 字段 | 类型 | 说明 |
|---|---|---|
event_time |
datetime | 订单时间 |
order_id |
string | 订单编号 |
product_id |
string | 商品编号 |
category_id |
string | 品类编号 |
category_code |
string | 品类编码(三级结构,如 electronics.tablet.samsung) |
brand |
string | 品牌 |
price |
float | 成交价格 |
user_id |
string | 用户编号 |
age |
int | 用户年龄 |
sex |
string | 用户性别 |
local |
string | 用户所在地区 |
注意:原始数据文件
电子产品销售分析.csv(约 94 MB)及清洗后数据cleaned_data.csv(约 130 MB)体积较大,未纳入版本控制。如需复现,请将原始数据文件放入data/目录后运行脚本。
- 去重:剔除完全重复订单记录
- 缺失值处理:
category_code缺失率约 22.93%,保留并拆分为一级/二级/三级品类,缺失部分标记为"未知";brand缺失填充为"未知品牌" - 异常值修正:识别并删除 1,307 条
event_time年份异常(1970 年)记录;删除 39 条price ≤ 0的异常订单 - 日期解析:将
event_time解析为标准 datetime 格式,并提取年/月/日/小时 - 品类拆分:将
category_code按.拆分为category_l1/category_l2/category_l3,便于下钻分析 - 类型优化:将品类、品牌、性别、地区等字段转为 category 类型,降低内存占用
- 总销售额、总订单量、客单价、独立用户数等核心指标
- 时间维度:按月/按日销售趋势,识别波峰与波动
- 用户维度:性别消费差异、年龄分布、地区 Top10 消费排行
- 产品维度:品类结构、品牌分布、价格带分布
- 品类结构:electronics、appliances、computers 为销售额前三品类
- 用户画像:年龄集中在 18–45 岁区间;男女性别订单数与消费金额较为接近
- 区域分析:广东、上海、北京为销售额 Top 3 地区
- 价格洞察:价格呈明显右偏分布,中位数约 87.94 元
- 用户价值:通过 RFM 模型进行用户分层,复购率约 56.90%
生成 7 张核心图表及完整数据分析报告:
| 图表 | 文件名 | 说明 |
|---|---|---|
| 销售额趋势 | 01_销售额趋势.png |
按月销售额时间序列趋势 |
| 品类占比 | 02_品类占比.png |
一级品类销售额及占比 |
| 性别消费对比 | 03_性别消费对比.png |
男女订单数与消费金额 |
| 年龄分布 | 04_年龄分布.png |
年龄分层与消费金额 |
| 地区排行 | 05_地区排行.png |
销售额 Top 10 地区 |
| 价格分布 | 06_价格分布.png |
成交价格带分布 |
| RFM 用户分层 | 07_RFM用户分层.png |
各层用户数与平均消费金额 |
ecommerce-sales-analysis/
├── data/ # 原始数据(需自行放置,默认被 gitignore 忽略)
│ ├── 电子产品销售分析.csv
│ ├── 2020年各省人口数量.xlsx
│ └── 字段说明和分析思路.txt
├── output/
│ ├── charts/ # 可视化图表(随仓库提交)
│ │ ├── 01_销售额趋势.png
│ │ ├── 02_品类占比.png
│ │ ├── 03_性别消费对比.png
│ │ ├── 04_年龄分布.png
│ │ ├── 05_地区排行.png
│ │ ├── 06_价格分布.png
│ │ └── 07_RFM用户分层.png
│ ├── 数据分析报告.md # 完整分析报告(随仓库提交)
│ ├── cleaned_data.csv # 清洗后数据(被 gitignore 忽略)
│ └── analysis_script.py # 脚本副本
├── analysis_script.py # 主分析脚本
├── requirements.txt # Python 依赖
├── .gitignore # Git 忽略规则
└── README.md # 项目说明
- Python 3.9+
- 依赖库见
requirements.txt
# 1. 克隆仓库
git clone <your-repo-url>
cd ecommerce-sales-analysis
# 2. 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 放置原始数据
# 将 电子产品销售分析.csv 放入 data/ 目录
# 5. 运行分析
python analysis_script.py
# 6. 查看输出
# 图表:output/charts/
# 报告:output/数据分析报告.md- electronics 品类 销售额占比约 48.5%,为绝对主力
- appliances 与 computers 分列二、三位,三者合计占比近 90%
- 性别差异:男性订单数与女性接近,人均消费均在 208 元左右
- 年龄集中:核心消费群体为 18–45 岁,其中 26–35 岁订单数最多
- 区域格局:广东、上海、北京三地销售额遥遥领先
- 价格分布:整体呈右偏分布,中位数约 87.94 元,存在少量高价值订单
- 用户价值:复购率约 56.90%,重要价值客户平均消费金额超过 4,000 元
- 数据处理:Pandas, NumPy
- 可视化:Matplotlib, Seaborn
- Excel 读写:OpenPyXL, xlrd
MIT