C2第 3 / 6 节 · 约 40 分钟

处理缺失、重复与异常:清洗不等于美化

本节目标
  • 区分缺失、错误与合理异常
  • 制定有依据且可追溯的清洗规则

先理解问题,再动手修改

积木体验站的模拟表里出现空白用时、两条相同尝试编号和一条八十分钟的记录。看见这些现象,不能立即把空白填成零、删除重复行、把八十改成八。清洗的目标是让数据符合已确认的记录规则,不是让结果更漂亮。零分钟通常表示确实没有耗时,空白则表示没有观察到或没有记录,二者含义不同。异常值也可能是复杂任务的真实结果,只有证据支持时才能修改。首先保留原始表,并为每一种可疑情况写出检查问题。

缺失需要区分原因

缺失值可能来自计时器未启动、任务尚未结束或录入遗漏。不同原因会影响处理方式:尚未结束的用时可能不适合计算完成用时均值,录入遗漏则可以尝试回看原始说明。填充意味着用一个规则估计缺失值,例如用已知记录的中位数替代,但它不能恢复真实观察,也会改变数据分布。若困难任务更容易漏记用时,只分析完整记录就可能低估耗时;缺失并不总是随机发生。因此要报告缺失比例和可能原因,不应只报告清洗后还剩多少行。

用微型样例检查单位与重复

五条记录的用时分别是六分钟、八分钟、空白、八分钟、一百二十秒。第一步统一单位,一百二十秒除以六十变成两分钟。第二步检查两条八分钟是否具有相同尝试编号。如果编号相同且所有字段相同,可能是重复导入;若编号不同,即使数值相同也可能是两次合法尝试。第三步把空白标为缺失,而不是零。假设确认重复八分钟只保留一条,则已知独立用时为六、八、二,中位数为六。若用六填充空白,应另外标出这条是估计值。

异常检测只是启动核实的信号

把用时排序可以发现特别大的或特别小的数,但排序不能说明它们一定错误。八十分钟可能来自暂停未扣除,也可能确实有较长尝试;两分钟可能来自简单任务,不必然是输入遗漏了零。可以先设置待核实标记,再查看任务类型、计时规则和批次。若无法核实,保留原值并做两种分析,例如包含与不包含该记录时的平均数各是多少。这种敏感性分析能展示结论对处理规则有多依赖,比悄悄删除不喜欢的数字更诚实。

用清洗日志保护结论

清洗日志至少写原字段、发现的问题、采用的规则、修改后的值和理由。可以记录一百二十秒换算为两分钟,依据是秒到分钟的单位转换;重复导入的尝试编号只保留一条,依据是来源批次核对;缺失用时暂不填充,依据是原因尚不明确。还应核对清洗前后行数与各类别数量,防止规则意外删除整个困难任务组。规则如果会用于机器学习,填充所需统计量必须只从训练数据中学习,不能偷偷利用之后的测试数据。

本节要点

  • 缺失不是零,相同数值不是重复证据
  • 异常值需要核实,不能按喜好删除
  • 保留原始数据、清洗日志与敏感性比较

动手练习:写一份可复核的清洗日志

  1. 列出六、八、空白、八、一百二十秒五条原始用时
  2. 假设两条八分钟来自同一个尝试编号,统一单位并去除确认重复
  3. 暂时保留缺失状态,计算有效记录数和中位数
  4. 再制作中位数填充的比较版,标记填充值
  5. 写出哪些修改有证据、哪些属于估计

自查清单

  • 秒到分钟换算正确
  • 确认重复依据是编号及来源而非数值
  • 明确区分观测值与填充值
先自己做,再查看参考答案

原始五条经过单位统一和已确认的重复导入处理,剩下四次尝试,其中三条已知用时为六、八、二分钟,一条仍然缺失。有效记录数为三,已知值排序为二、六、八,中位数为六。比较版可以把缺失填为六,但要保留填充标记并明确这是规则估计,不代表原先真的用了六分钟。日志应记录秒换算分钟的确定规则、重复编号的来源核对、未填充版与填充版的差异。不能把不同编号但同为八分钟的记录删掉,也不能用零假装已经获得未知用时。

本节自测

学完了吗?

标记后会记录在本机浏览器,课程首页显示你的进度。