数据清洗技术

数据脏污的核心问题

  1. 字段类型污染

    • 数值字段含文本(如年龄填"保密")
    • 日期格式混乱(1990年 vs 2090年)
    • 特殊字符污染(如"111111")
  2. 逻辑冲突

    • 65岁用户购买游戏装备(年龄-行为矛盾)
    • 订单金额为负数(业务逻辑违规)
  3. 系统默认值误用

    • 地址填"火星第三大街"(未覆盖默认值)
    • 商品类别为"请选择"(未初始化数据)

六维清洗技术框架

1. 缺失值处理(Missing Values)
# 技术实现示例
def handle_missing(df):
    # 业务关联填补
    if '购买频次' in df and '用户等级' not in df: 
        df['用户等级'] = df['购买频次'].map(calc_level)  # 基于业务规则推算
        
    # 重要性分级处理
    critical_cols = ['user_id', 'payment']
    df = df.dropna(subset=critical_cols)  # 关键字段整行删除
    
    # 非关键字段填补
    df['age'] = df['age'].fillna(df['age'].median())
    return df

技术要点

  • 优先通过特征交叉验证补全(如用购买记录推算用户等级)
  • 时间序列数据采用前向填充(ffill)或插值法
  • 分类变量新增"Unknown"类别
2. 异常值检测(Outliers)

多模态检测方法

from sklearn.ensemble import IsolationForest

# 方法1:统计边界
q1 = df['amount'].quantile(0.25)
q3 = df['amount'].quantile(0.75)
iqr = q3 - q1
lower_bound = q1 - 1.5*iqr

# 方法2:机器学习检测
clf = IsolationForest(contamination=0.01)
df['anomaly'] = clf.fit_predict(df[['age','amount']])

处理策略

  • 业务白名单机制(如游戏工作室账号特殊标记)
  • 动态阈值调整(促销期订单金额上限浮动)
  • 异常日志留存分析(反作弊场景)
3. 格式标准化(Formatting)

关键转换矩阵

原格式目标格式转换函数
“1990/01/02”YYYY-MM-DDpd.to_datetime()
“1,000.5元”1000.50re.sub(r’[^\d.]')
“江苏省南京市”南京(标准化地址库)地址智能解析API

技术要点

  • 货币单位统一为基准货币(如CNY)
  • 地理信息转换GPS坐标(高德/百度API)
  • 建立企业级数据字典(字段命名规范)
4. 重复记录处理(Duplicates)
-- 多维度去重SQL示例
WITH ranked AS (
  SELECT *,
    ROW_NUMBER() OVER (
      PARTITION BY device_id, session_id 
      ORDER BY event_time DESC
    ) AS rn
  FROM user_events
)
SELECT * FROM ranked WHERE rn = 1;

场景化策略

  • 交易记录:保留最新状态(如订单状态更新)
  • 行为数据:合并点击流(相同session去重)
  • 用户信息:主键合并(手机号>邮箱>设备ID)
5. 逻辑验证(Business Rules)

动态规则引擎配置

# 规则配置文件示例
validation_rules:
  - field: birth_year
    rule: "value > 1920 && value < 2020"
    action: "set_null"
    
  - field: product_category
    rule: "value in CATEGORY_WHITELIST"
    action: "reject"
    
  - field: payment_amount
    rule: "value > 0"
    error_code: "INVALID_AMOUNT"

核心验证维度

  • 生命周期验证(死亡用户无购买)
  • 物理可行性(24小时配送距离<1000公里)
  • 枚举值白名单(商品类目树校验)
6. 非结构化数据处理(Unstructured Data)

文本清洗流程

原始文本 → HTML标签移除 → 特殊字符过滤 → 停用词去除 → 实体识别 → 标准化存储

地址处理示例
"北京朝阳区望京SOHO塔1 B座 12层" → 解析为:

{
  "province": "北京",
  "district": "朝阳区",
  "building": "望京SOHO",
  "tower": "塔1",
  "block": "B座",
  "floor": "12"
}

工程化实践要点

  1. 数据血缘追踪

    • 使用Apache Atlas记录清洗过程
    • 保留原始数据快照(不可变存储)
  2. 自动化管道设计

通过
失败
成功
失败
原始数据
质量检测
标准存储
规则引擎
自动修复
人工审核
  1. 监控指标体系
    • 数据 completeness > 99.5%
    • 值域准确率 > 98%
    • 处理延迟 < 5分钟

常见陷阱规避

  1. 过度清洗

    • 保留行为日志时间戳原始值(时区信息勿丢失)
    • 谨慎处理极值(可能是VIP用户)
  2. 静态规则失效

    • 每周更新商品类目白名单
    • 动态阈值(促销期订单金额上限自动提升)
  3. 业务语义丢失

    • 将"火星第三大街"标记为test_user
    • 保留清洗注释字段(如cleaning_note: "年龄逻辑冲突"

最终输出应满足:可追溯性(Traceability)、可解释性(Interpretability)、可复用性(Reusability)三大特性,这是AI模型有效训练的前提基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

frostmelody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值