
💎【行业认证·权威头衔】
✔ 华为云天团核心成员:特约编辑/云享专家/开发者专家/产品云测专家
✔ 开发者社区全满贯:CSDN博客&商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金&亚马逊&51CTO顶级博主
✔ 技术生态共建先锋:横跨鸿蒙、云计算、AI等前沿领域的技术布道者
🏆【荣誉殿堂】
🎖 连续三年蝉联"华为云十佳博主"(2022-2024)
🎖 双冠加冕CSDN"年度博客之星TOP2"(2022&2023)
🎖 十余个技术社区年度杰出贡献奖得主
📚【知识宝库】
覆盖全栈技术矩阵:
◾ 编程语言:.NET/Java/Python/Go/Node...
◾ 移动生态:HarmonyOS/iOS/Android/小程序
◾ 前沿领域:物联网/网络安全/大数据/AI/元宇宙
◾ 游戏开发:Unity3D引擎深度解析
文章目录
🚀前言
多样的数据源在短时间内为人们提供了海量的数据,但是这些数据非常容易受到噪声、丢失和数据格式不一致的影响。低质量的数据将干扰数据分析与可视化工作。数据科学家和工程师们通过大量的理论与实践,提出了很多数据预处理的技术,这些技术能帮助我们更好地挖掘数据中的知识和信息,本章将介绍这些数据预处理技术。
🚀一、数据集成
在现实世界的业务系统中,数据通常根据不同的业务功能、部门划分或性能优化需求,被分散存储于多个数据库、数据表或文件中(如不同业务线的订单表、独立的客户信息库、历史归档数据等)。在进行数据分析和挖掘之前,一个关键步骤是将这些来自不同源头的数据合并成一个统一、一致的数据视图。然而,数据集成绝非简单的数据堆叠或物理拼接。其主要目标是:在合并数据的过程中,最大限度地消除数据冗余、解决数据不一致性,并确保数据的完整性和准确性,从而为后续分析提供一个可靠、高质量的数据基础。
🔎1.属性匹配
在合并多个数据表时,我们面临的首要挑战是属性匹配(Schema Matching),即识别和确认不同数据源中描述同一现实世界特征的属性(字段),并对它们进行对齐和统一。这个过程需要仔细考虑以下几个核心问题:
- 同名不同义 :不同表中的字段名称相同,但实际含义不同。例如,表A中的
name字段存储的是用户真实姓名,而表B中的name字段存储的可能是产品名称。 - 同义不同名 :描述同一特征的字段在不同表中有不同的名称。例如,描述用户姓名的字段在表A中叫
customer_name,在表B中叫client_name。 - 数据规则不一致 :即使字段含义相同,其数据格式、编码规则或值域也可能不同。这是最常见的问题之一,例如:
- 格式不一致 :日期格式(
YYYY-MM-DDvsDD/MM/YYYY)、电话号码格式(13800138000vs138-0013-8000)。 - 编码不一致:性别属性,在表A中用"男"、"女"表示,在表B中用"M"、"F"表示,在表C中用"1"、"0"表示。
- 单位不一致:重量单位,在表A中用"公斤",在表B中用"磅"。
- 粒度不一致 :地址信息,表A有独立的
省、市、区字段,而表B只有一个详细地址字段。
- 格式不一致 :日期格式(
🦋实操示例:使用Power Query整合学生数据
假设有两个独立的数据源分别存储学生信息:
- 数据源A(Excel文件) :包含字段
student_id,first_name,gender,math_score。其中,gender字段用"female"和"male"表示。 - 数据源B(CSV文件) :包含字段
id,firstname,gender,physics_score。其中,gender字段用"F"和"M"表示。
我们的目标是将这两个数据源整合为一个统一的学生信息表,并规定:姓名字段名统一为first_name,性别编码统一为"F"和"M"。
操作步骤详解(在Microsoft Excel中使用Power Query):
-
启动Power Query编辑器:
- 在Excel中,切换到【数据】选项卡。
- 单击【获取数据】右侧的下拉箭头,选择【启动Power Query编辑器】(见图3-22)。
图3-22 启动Power Query编辑器

-
导入Excel数据源:
-
在Power Query编辑器界面,点击【主页】选项卡的【新建源】→【Excel工作簿】(见图3-23, 图3-24)。


-
导航并选择本地的学生成绩Excel文件。
-
在弹出的导航器中,勾选包含数据的工作表(如
Sheet1),预览数据后点击【转换数据】(或【加载】)(见图3-25)。数据将被加载到Power Query编辑器中。

-
-
导入CSV数据源:
- 使用相同的方法(【新建源】→【文本/CSV】),将存储学生信息的CSV文件导入Power Query编辑器(见图3-26)。此时,编辑器左侧的"查询"窗格中将出现两个独立的查询。
图3-26 已导入Excel和CSV两个数据源

-
统一属性(字段)名称与值:
-
统一性别编码 :在代表Excel数据源的查询中,选中
gender列。然后在【转换】选项卡下,点击【替换值】。在弹出的对话框中,将"female"替换为"F",将"male"替换为"M"(见图3-27)。点击【确定】。

-
统一字段名 :在代表CSV数据源的查询中,双击
firstname字段的标题,将其重命名为first_name(与Excel数据源一致),按回车确认(见图3-28)。

-
-
合并(追加)查询:
-
在【主页】选项卡中,点击【追加查询】按钮。在弹出的对话框中,选择"两个表"或"三个或更多表",然后依次将两个查询(数据源)添加到要追加的表中(见图3-29)。
-
点击【确定】后,Power Query会创建一个新的查询,其中包含了两个数据源上下堆叠在一起的所有行,且字段已根据名称自动对齐。
图3-29 使用"追加查询"合并两个数据源

-
-
加载回Excel工作表:
- 对合并后的新查询进行任何最终调整(如调整列顺序、数据类型)后,点击【主页】选项卡的【关闭并上载】按钮(见图3-30)。
- 数据将被加载回Excel的一个新工作表中,形成一个整合后、统一的表格。
图3-30 关闭并上载至Excel工作表

通过以上步骤,我们完成了两个异构数据源在字段名称 和编码值层面的匹配与统一,为后续分析创建了一个一致的数据集。
🔎2.属性冗余
数据集成后,另一个需要警惕的问题是属性冗余。属性冗余是指一个或多个属性可以从数据集中的其他属性推导出来。冗余属性不仅会增加存储空间和计算开销,还可能在建模时引入多重共线性等问题,影响模型的稳定性和可解释性。
🦋如何检测属性冗余?
-
基于业务逻辑的推理 :这是最直接的方法。例如,在包含
出生日期和年龄的数据集中,年龄可以通过当前日期减去出生日期计算得出,因此年龄属性可能是冗余的。再比如,有了单价和数量,总价就是冗余的。 -
基于统计方法的检测:对于业务逻辑不明显的属性,可以使用统计方法来度量属性间的相关性。
- 连续型数值数据 :计算皮尔逊相关系数(Pearson Correlation Coefficient) 。该系数衡量两个连续变量之间的线性相关程度,其值介于-1和1之间。
- 接近1或-1:强相关,可能存在冗余。
- 接近0:弱相关,独立性较强。
- 在Excel中的操作 :可以使用
=CORREL(array1, array2)或=PEARSON(array1, array2)函数计算。例如,若要检查"身高"和"体重"是否高度相关,可分别选中两列数据作为参数。
- 离散型数据(分类数据) :可以使用卡方检验(Chi-Square Test) 。卡方检验用于判断两个分类变量之间是否独立。如果检验结果显示它们不独立(即p值很小),则说明这两个属性存在显著的关联,其中一个可能蕴含了另一个的信息,需要考虑是否存在冗余。
- 在Excel中,可以使用
分析工具库中的"相关系数"工具进行批量计算,或使用CHISQ.TEST函数进行卡方检验。
- 在Excel中,可以使用
- 连续型数值数据 :计算皮尔逊相关系数(Pearson Correlation Coefficient) 。该系数衡量两个连续变量之间的线性相关程度,其值介于-1和1之间。
🦋处理属性冗余的策略
一旦识别出冗余属性,可以根据分析目标进行处理:
- 直接删除 :如果某个属性完全可以从其他属性推导,且对分析没有额外贡献,可以安全删除。例如,删除由
单价和数量计算出的总价。 - 创建新特征并删除原属性 :有时,冗余属性组合可以创造更有价值的新特征。例如,有
长和宽两个属性,可以创建面积(长*宽)这个新特征,然后删除原始的长和宽。 - 保留以供验证:在某些需要数据审计或结果验证的场景,可以暂时保留冗余属性,用于交叉检查数据的正确性。
- 在建模时注意:如果使用线性回归等模型,高度相关的特征(多重共线性)会导致模型系数估计不准确。此时需要使用正则化(如岭回归、Lasso)或进行特征选择。
数据集成是一个细致且关键的过程,它要求我们不仅关注技术上的合并操作,更要深入理解数据的语义和业务背景。成功的集成依赖于:
- 彻底的属性分析和映射:解决同名异义、同义异名问题。
- 精细的数据转换与清洗:统一格式、编码、单位和值域。
- 冗余与相关性分析:利用统计方法和业务知识,精简数据集,提升数据质量。
- 处理数据冲突:当不同来源对同一实体的描述不一致时(如两个系统记录的客户地址不同),需要制定冲突解决策略(如以最新记录为准、以某一权威系统为准或人工核实)。
最终,通过系统性的数据集成,我们能够将分散的、异构的"数据孤岛"连接成一个有机的、高质量的"数据大陆",为深入的数据分析和价值挖掘提供坚实、统一的基石。