数据分析完整流程实战:数据集选择、收集整理、标注、清洗到分析
2026/8/21 10:13:03 网站建设 项目流程

用电商用户行为项目走一遍完整流程:数据集选择 → 收集整理 → 数据标注 → 数据清洗 → 漏斗与 RFM 分析。工具为 pandas + seaborn。

一、数据集选择

选数据集的标准:业务链路完整、字段有公开字典。常见候选对比:

数据集规模优点缺点
REES46 eCommerce behavior(Kaggle)2.85 亿事件真实数据,view→cart→purchase 完整漏斗单文件 5GB+,需分块读取
UCI Online Retail54 万行体量小只有交易流水,无浏览行为
Olist 巴西电商10 万订单多表结构缺成交前行为数据

本文选用 REES46 的eCommerce behavior data from multi category store(Michael Kechinov,CC BY 4.0,Kaggle / 天池可下载),每行一个真实用户事件,漏斗全链路完整。

二、数据收集与整理

分块读取大文件。2019-Oct.csv 约 4200 万行,直接read_csv会超内存:

import pandas as pd cols = ["event_time", "event_type", "product_id", "price", "user_id", "user_session"] chunks = pd.read_csv("2019-Oct.csv", usecols=cols, chunksize=1_000_000) df = pd.concat(chunks)

统一粒度。原始数据一行一个事件,漏斗分析需要一行一个用户,透视转换:

user_df = df.pivot_table(index="user_id", columns="event_type", values="product_id", aggfunc="count", fill_value=0) user_df = user_df.reset_index().rename_axis(columns=None)

整理后检查:info()确认类型并将event_time转 datetime;describe()抓异常;统一列名。

三、数据标注

标注是把业务口径固化为代码标签,分两类。

1. 行为阶段标签。漏斗每步需明确定义且逐级嵌套:

  • 点击:发生有效浏览
  • 加购:发生在点击之后
  • 下单、支付:同理

需做顺序校验。真实日志中常出现"支付早于下单"(埋点延迟、跨天 session 拼接错误),不校验会导致转化率超过 100%。

2. 用户分层标签。以 RFM 为例:

pay["R"] = pd.qcut(pay["days_since_last"], 4, labels=[4, 3, 2, 1]).astype(int) pay["F"] = pd.qcut(pay["order_count"].rank(method="first"), 4, labels=[1, 2, 3, 4]).astype(int) pay["M"] = pd.qcut(pay["amount"].rank(method="first"), 4, labels=[1, 2, 3, 4]).astype(int) pay["RFM"] = pay["R"] + pay["F"] + pay["M"]

总分 ≥10 标"高价值",7~9"潜力",5~6"一般",≤4"待唤醒"。阈值需与业务方确认后固定,不可每次调整。

四、数据清洗

本文数据含 150 条重复记录、300 个年龄缺失:

df = df.drop_duplicates(subset="user_id") # 按业务主键去重 df["age"] = df["age"].fillna(df["age"].median()) # 数值缺失填中位数

原则:

  • 去重按subset主键,不整行比对
  • 数值缺失用中位数,抗异常值
  • 类别缺失先判断"缺失是否本身是一种状态",如 brand 为空多为无牌商品,标 "unknown" 比填众数合理
  • 删行前输出删除比例,超过 5% 需先查原因

REES46 原始数据中category_code缺失 1300 余万条、brand缺失 600 余万条,处理方式是在品类/品牌分析时过滤,而非整行删除。

五、分析结果

转化漏斗。整体曝光→支付转化率 14.2%:

环节转化率
曝光 → 点击45.0%
点击 → 加购59.2%
加购 → 下单61.8%
下单 → 支付86.2%

最大流失在曝光→点击,问题在流量质量与素材,优化方向为投放定向和首图。

渠道对比。

短视频渠道支付转化 16.4%,四个渠道最高;社交裂变下单→支付转化 95%;搜索广告各级均平庸。建议搜索广告预算向短视频倾斜,社交裂变用于老带新激励。

RFM 分层。

高价值用户占 15.8%,贡献 24.8% 营收,整体客单价 236 元。运营动作:高价值用户给专属权益,待唤醒用户做召回 AB 实验,中间层常规触达。

常见问题(FAQ)

Q:数据分析项目去哪里找数据集?

Kaggle、天池、UCI Machine Learning Repository。选择标准:业务链路完整、字段有公开数据字典。REES46 电商行为数据(2.85 亿真实事件,CC BY 4.0)适合漏斗与 RFM 分析,UCI Online Retail 适合入门。

Q:数据标注在数据分析里指什么?

把业务口径固化为代码标签。包括行为阶段标注(定义漏斗每步触发条件与先后顺序)和用户分层标注(如 RFM 四分位打分映射为"高价值""待唤醒")。规则需与业务方对齐后固定。

Q:数据清洗的必须步骤?

按顺序:按业务主键去重 → 处理缺失值(数值用中位数,类别标 unknown)→ 校验逻辑矛盾(如支付时间早于下单时间)→ 处理异常值。每步删改前查看占比,超过 5% 先查原因。

Q:CSV 太大 pandas 读不动怎么办?

read_csv使用chunksize分块读取,配合usecols只加载需要的列,逐块聚合后合并。4200 万行数据普通笔记本即可处理。

Q:RFM 模型代码怎么实现?

对付费用户按最近购买天数(R)、订单数(F)、消费金额(M)分别pd.qcut四分位打分后求和,按阈值映射分层。F 和 M 打分前用rank(method="first")处理同分,避免分箱失败。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询