Pandas Bootcamp
首页特训项目关于开始学习
01
电商销售数据质检审计
入门
02
基于购物车的复购行为与商品关联预测
入门
03
RFM 模型与用户价值聚类分层
进阶
04
AIGC 训练语料库去偏与去噪
进阶
05
游戏玩家行为序列与留存漏斗分析
进阶
06
金融信贷反欺诈特征工程
高级
07
IoT 传感器时序数据异常检测
高级
08
多源数据融合与主数据治理
进阶
09
AI 数据质量监控与血缘追踪
高级
10
AI 辅助数据自动化分析与故事化报告
高级
返回首页
PROJECT 08进阶

多源数据融合与主数据治理

Multi-source Data Fusion & MDM

整合多源异构数据,使用 merge/join/concat、模糊匹配与格式归一化。

merge/join/concat模糊匹配格式归一化冲突解决Golden Record

项目背景

某集团完成并购后,需要整合 3 个子公司的客户数据。各公司使用不同的客户标识体系、地址格式和命名规范,存在大量重复记录和冲突字段。

模拟数据集

source,client_id,name,email,phone,address,created_date
sys_a,A001,张三,zhangsan@email.com,13800138000,北京市朝阳区建国路88号,2023-01-15
sys_a,A002,李 四,lisi@email.com,13900139000,上海市浦东新区陆家嘴100号,2023-03-20
sys_b,B101,Zhang San,zhangsan@email.com,+86-138-0013-8000,北京朝阳建国路88号,2023-02-10
sys_b,B102,王五,wangwu@email.com,13700137000,广州市天河区天河路200号,2023-04-05
sys_c,C001,张三,zhang.san@email.com,13800138000,北京市朝阳区建国路88号,2023-01-20
sys_c,C002,赵六,zhaoliu@email.com,13600136000,深圳市南山区科技园300号,2023-05-12

代码练习区

在下方编辑器中编写你的 Pandas 代码。可记录笔记、编写伪代码,参考答案在下方。

pandas_exercise.py
Loading...

参考答案

reference_solution.py
import pandas as pd
import re
from thefuzz import fuzz

df = pd.read_csv('client_data.csv')

# 1. 格式归一化 - 电话号码
def normalize_phone(phone):
    phone = re.sub(r'[^\d+]', '', str(phone))
    phone = phone.replace('+86', '')
    return phone.zfill(11)

df['phone_norm'] = df['phone'].apply(normalize_phone)

# 2. 格式归一化 - 邮箱
df['email_norm'] = df['email'].str.lower().str.strip()

# 3. 格式归一化 - 姓名
df['name_norm'] = df['name'].str.replace(r'\s+', '', regex=True)

# 4. 地址标准化
df['address_norm'] = (df['address']
    .str.replace('省', '')
    .str.replace('市', '')
    .str.replace('区', '')
    .str.replace('路', '路')
    .str.replace('号', '号'))

# 5. 基于多个字段的实体解析 (Record Linkage)
# 同一客户识别条件: 手机号相同 OR (邮箱相同 AND 姓名相似度 > 80)
df['name_match'] = df.groupby('email_norm')['name_norm'].transform(
    lambda x: x.apply(lambda n: any(fuzz.ratio(n, other) > 80 for other in x if n != other))
)

# 6. 生成 Golden Record (合并去重)
golden = df.groupby(['phone_norm']).agg({
    'client_id': lambda x: ','.join(sorted(x)),
    'name': 'first',
    'email': 'first',
    'address': 'first',
    'source': lambda x: ','.join(x),
    'created_date': 'min'
}).reset_index()

业务解读

主数据治理 (MDM) 是企业数据基建的核心。多源数据融合的关键在于 '实体解析' (Entity Resolution) —— 确定不同系统中的记录是否指向同一实体。模糊匹配 (fuzzy matching) 处理拼写差异,规则引擎定义匹配策略。Golden Record 是 '单一客户视图' 的基础。