2. 数据准备与清洗:复盘所需数据源与清洗原则
效果评估与风险人群复盘的准确性,高度依赖底层数据的质量。本章聚焦于构建复盘所需的数据体系,明确三大核心数据源(行为数据、交易数据、画像数据)的采集范围,并建立标准化的数据清洗原则与常见问题处理流程。
2.1 复盘所需三大数据源
复盘分析需要整合多维度数据,以形成对风险人群的完整刻画。下表列出了三大数据源的核心字段与用途:
| 数据源类型 | 核心字段示例 | 复盘用途 |
|---|---|---|
| 行为数据 | 登录时间、浏览页面、点击频次、停留时长、操作路径、设备指纹 | 识别异常操作模式(如高频点击、非正常时段登录)、评估用户活跃度与转化漏斗 |
| 交易数据 | 订单金额、交易时间、支付方式、收货地址、退款记录、交易对手 | 分析交易金额分布、异常交易时段、高频退款行为、关联交易网络 |
| 画像数据 | 年龄、性别、注册时长、信用评分、职业、收入区间、历史逾期标签 | 分层评估不同客群的风险表现,定位高风险画像特征 |
数据源整合提示: 建议以用户唯一标识(如用户ID)作为主键,将行为、交易、画像数据通过时间戳对齐,构建宽表用于后续复盘分析。避免在数据源层面遗漏关键维度,导致复盘结论片面。
2.2 数据清洗原则与标准流程
原始数据通常包含缺失、异常、重复等问题,必须经过清洗才能用于复盘。数据清洗应遵循以下四项核心原则:
- 完整性原则: 确保关键字段(如用户ID、交易金额、时间戳)非空,缺失比例超过阈值(如30%)的字段需评估是否保留。
- 准确性原则: 剔除明显超出业务逻辑范围的数据(如交易金额为负数、年龄超过120岁)。
- 一致性原则: 统一数据格式(如日期格式统一为YYYY-MM-DD)、编码标准(如性别统一为0/1)。
- 时效性原则: 仅保留复盘时间窗口内的数据,剔除过期或无效记录。
下图展示了标准的数据清洗流程,从原始数据输入到清洗后数据输出,包含关键处理节点:
2.3 常见数据问题与处理策略
在实际复盘项目中,数据问题往往集中在以下几类。下表总结了常见问题、识别方法及推荐处理策略:
| 问题类型 | 识别方法 | 推荐处理策略 |
|---|---|---|
| 缺失值 | 使用 isnull() 统计各字段缺失比例;可视化缺失矩阵 |
缺失率 < 5%:删除记录;5%-30%:填充(均值/中位数/众数);> 30%:评估字段重要性,考虑删除字段 |
| 异常值 | 箱线图、Z-score、业务规则(如交易金额 > 100万) | 业务明确错误:直接删除或修正;业务合理但极端:保留并单独标记,用于风险人群分析 |
| 重复数据 | 基于主键(如用户ID+时间戳)去重;检查完全重复行 | 完全重复:保留第一条;业务重复(如同一用户同一天多次登录):根据业务逻辑保留或聚合 |
| 格式不一致 | 检查日期格式、数值单位、文本编码 | 统一转换为标准格式(如日期统一为YYYY-MM-DD,金额统一为分) |
| 逻辑矛盾 | 交叉字段校验(如注册时间 > 交易时间) | 根据业务逻辑修正或删除矛盾记录 |
注意: 在处理异常值时,切勿直接删除所有异常记录。部分异常值可能代表高风险行为(如单笔大额交易),这些数据对于风险人群复盘具有重要价值。建议先标记异常类型,再根据复盘目标决定保留或剔除。
2.4 数据清洗代码示例
以下Python代码片段展示了使用Pandas进行数据清洗的典型操作,涵盖缺失值处理、异常值检测与重复值去重:
import pandas as pd
import numpy as np
# 加载原始数据
df = pd.read_csv('risk_review_data.csv')
# 1. 缺失值处理:填充交易金额缺失值(中位数)
df['transaction_amount'].fillna(df['transaction_amount'].median(), inplace=True)
# 2. 异常值检测:基于3σ原则剔除交易金额异常
mean = df['transaction_amount'].mean()
std = df['transaction_amount'].std()
df = df[(df['transaction_amount'] >= mean - 3*std) &
(df['transaction_amount'] <= mean + 3*std)]
# 3. 重复值去重:基于用户ID和交易时间戳去重
df.drop_duplicates(subset=['user_id', 'transaction_time'], keep='first', inplace=True)
# 4. 格式统一:将日期列转换为标准格式
df['transaction_time'] = pd.to_datetime(df['transaction_time'], format='%Y-%m-%d')
# 输出清洗后数据概览
print(f"清洗后数据量: {len(df)} 条")
print(df.info())
关键点: 数据清洗是复盘分析的基石。建议在清洗完成后,生成一份数据质量报告,记录清洗前后的数据量变化、缺失值处理方式、异常值剔除比例等,确保复盘过程可追溯、可复现。