数据很少以完美状态呈现。想象一下,用弯曲的横梁、缺失的钉子和大小不一的砖块建造房屋。这样的房屋既不稳定也不实用。同样,使用原始、混乱的数据进行分析或输入到机器学习模型中,常常会导致结果不准确或系统故障。这就是数据清洗的作用。它是识别并纠正(或移除)数据集中错误、不一致和不准确之处的过程。可以将其想象成在开始任何重要工作之前整理您的数据工作区。数据的质量直接影响基于其构建的任何分析结果或应用程序的质量。俗话说“垃圾进,垃圾出”,这在数据工程中尤其如此。干净的数据对于可靠的分析、准确的报告和有效的机器学习模型来说是必不可少的。投入时间进行清洗可能看起来繁琐,但它可以避免后期出现更大的问题。常见数据质量问题数据缺陷有多种形式。以下是一些您会经常遇到的问题:缺失值: 记录中的字段可能为空。例如,客户的注册表可能缺少其电话号码或城市。这可能由于数据录入错误、可选字段或数据传输中的问题造成。重复记录: 同一条信息可能在您的数据集中多次出现。这通常发生在数据从不同来源合并时,或由于用户输入时的错误。例如,同一个客户可能存在姓名上的细微差异(例如,“John Doe”与“J. Doe”)。不正确的数据类型或格式: 数据可能以不一致或不适当的格式存储。日期可能以多种方式表示(“MM/DD/YYYY”、“YYYY-MM-DD”、“DD-Mon-YY”),数字可能以文本字符串形式存储(阻止计算),或者文本字段可能包含意想不到的字符。异常值: 这些是与其他观测值显著不同的数据点。在热带气候中,年龄字段显示“150”或温度读数为“-100°C”很可能是异常值。它们可能是真实的极端值,但更常见的是数据录入错误。不一致的值: 相同的信息在不同记录中可能以不同方式表示。例如,一个“国家”列可能包含“USA”、“U.S.A.”、“United States”和“America”,它们都指向同一个地方。数据清洗常用方法解决这些问题需要应用多种方法。具体方法通常取决于上下文、数据类型和预期用途。以下是一些主要策略:处理缺失值:删除: 如果只有一小部分记录有缺失值,或者某个特定字段在大多数记录中都缺失且不重要,您可能会删除受影响的行或列。但是,请注意,这会减小您的数据集大小。填充: 您可以用替代值填充缺失值。常用方法包括使用相应列的均值、中位数(针对数值数据)或众数(最频繁的值,针对分类数据)。或者,您可以用一个常量值(如“未知”或0)填充,以明确原始值是缺失的。处理重复值:识别: 首先,您需要定义什么构成重复。是基于唯一ID,还是基于字段组合(如姓名、地址和出生日期)?移除: 一旦识别出来,重复记录通常会被移除,只保留一个实例(通常是第一个或最完整的那个)。格式标准化:数据类型转换: 确保数值数据以数字(整数、浮点数)形式存储,日期以一致的日期/时间格式存储。将数字的文本表示(“123”)转换为实际的数值类型。格式统一: 应用一致的格式规则。例如,将所有日期条目转换为YYYY-MM-DD格式。标准化文本条目,例如将所有州缩写转换为两位字母代码(例如,“California”转换为“CA”)。处理异常值:检查: 总是首先检查异常值。它们是错误还是真实的极端值?这里通常需要专业知识。修正/移除: 如果异常值明显是错误(例如年龄200),如果真实值已知,可以进行修正;否则将其视为缺失值或移除。封顶: 有时,如果极端值被认为是有效但可能对分析造成干扰,则会将其限制在一定的最大(或最小)阈值。解决不一致:值映射: 创建规则或映射表,以合并相同信息的不同表示形式。例如,将“USA”、“U.S.A.”和“United States”都映射到一个标准值,如“US”。示例:清洗一个简单数据集让我们看看应用一些基本清洗步骤前后的一个小型表格:清洗前:用户ID姓名注册日期访问量国家1Alice2023-01-1510USA2Bob2023/02/105UK3Charlie2023-03-05U.S.A.4Alice2023-01-1510USA5DavidMar 20, 23150United States6Eve2023-04-22-5CA已识别的问题:第4行是第1行的重复。日期(注册日期)格式不一致。查理(第3行)的“访问量”有缺失值。伊芙(第6行)的“访问量”可能是异常值或错误(负数访问量?)。大卫(第5行)的“访问量”可能是异常值(150次访问量与其他相比似乎很高)。“国家”列中值不一致(USA、U.S.A.、United States)。“CA”可能指加拿大或加利福尼亚州——需要澄清。本例中假定“CA”指加拿大。应用基本清洗后:(假设我们移除了重复项,将日期标准化为YYYY-MM-DD,将缺失的访问量填充为0,将负数访问量视为0,将访问量限制在100,并标准化国家名称)用户ID姓名注册日期访问量国家备注1Alice2023-01-1510US2Bob2023-02-105UK3Charlie2023-03-050US访问量已填充5David2023-03-20100US访问量已封顶6Eve2023-04-220CA访问量已从负数修正此表格显示了移除重复项、标准化日期和国家格式以及处理缺失或异常访问量后的数据集。数据清洗是一个迭代过程。您可能会清洗数据,进行一些分析,发现新的问题,然后调整您的清洗步骤。虽然我们在这里讨论了基本方法,但数据工程师通常使用Python(配合Pandas等库)或SQL等编程语言,以及专门的数据质量工具,以便在大规模数据集上高效地自动化执行这些任务。这个重要步骤确保流经您的数据管道的数据是可靠的,并准备好用于其预期目的,无论是报告、分析还是支持AI应用程序。