数据通常从各种来源收集,例如下载的文件、访问的数据库或查询的API。这些数据往往无法立即用于分析。数据经常杂乱、不完整或不一致。解决这些问题是数据清洗的primary目的。可以将数据清洗看作是整理数据集的过程。它涉及识别并纠正(或有时删除)数据中的错误、不一致和不准确之处。为什么这是必要的?因为你的分析质量和你得出的任何结论,很大程度上取决于输入数据的质量。即使是最精密的分析技术,如果输入有缺陷的数据,也可能导致有缺陷或误导性的结果。这一原则通常概括为“垃圾进,垃圾出”(GIGO)。数据为何不总是干净的数据可能杂乱的原因有很多:人为错误: 人们在数据录入时会犯错。拼写错误很常见,字段可能留空,或者输入不正确的信息。系统问题: 数据可能来自不同系统,标准或格式各异。合并这些数据集可能引入不一致。传感器故障可能导致读数不正确。信息缺失: 有时数据没有针对某些记录或属性进行收集,导致缺失值。这可能是故意的(例如,可选的调查问题)或偶然的。格式差异: 日期可能以不同格式存储(例如,MM/DD/YYYY 对比 YYYY-MM-DD),文本条目在大小写或拼写上可能存在差异(例如,“New York”、“NY”、“new york”),或者单位可能不一致(例如,磅 对比 千克)。过时数据: 信息会随时间变得过时。地址会变,产品会停产,状态会更新。数据清洗处理的问题数据清洗侧重于检测和解决这些问题。数据清洗旨在处理的常见问题包括:缺失值: 识别为空或由占位符(如 null、NA 或 999)表示的条目。后续步骤将决定如何处理这些空白。不正确的数据类型: 确保数据以正确格式存储。例如,以文本字符串形式存储的数字在转换之前不能用于计算。重复记录: 查找并通常删除表示完全相同实体或观测值的行。不一致的条目: 标准化文本数据,例如将所有州缩写转换为大写,或为日期选择一种格式。结构错误: 修正与数据布局或结构相关的问题,例如错位的值。异常值(潜在错误): 识别远远超出预期范围的值。虽然不总是错误,但它们需要调查。(我们将在后续部分更详细地介绍异常值)。digraph DataCleaningProcess { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fillcolor="#e9ecef", style="filled, rounded"]; edge [color="#868e96"]; RawData [label="原始数据\n(杂乱, 不一致)"]; CleanData [label="干净数据\n(一致, 可用)"]; Analysis [label="分析与\n建模"]; RawData -> DataCleaning [label=" 识别并修复问题 \n (缺失值, 重复项, 错误等) "]; DataCleaning [label="数据清洗\n过程"]; DataCleaning -> CleanData; CleanData -> Analysis; }数据清洗将原始、通常杂乱的数据转换为适合分析的干净、一致的格式。数据清洗的目标不一定是让数据在各种意义上都“完美”,这有时可能是不可能或不切实际的。相反,目的是使数据足够准确、一致和完整,以满足手头的特定分析任务。这是数据科学工作流程中的一个基本步骤,确保后续的检查、分析和建模都建立在可靠的信息之上。不进行适当清洗,你可能会基于有缺陷的依据做出决策。接下来的部分将介绍处理常见数据质量问题(如缺失值和潜在异常值)的具体技术。