在了解了检测缺失数据的方法以及删除和填充(使用均值、中位数或众数)等基本技术之后,一个实际问题出现了:您应该选择哪种策略?没有一个单一的通用答案。最佳方法很大程度上取决于您的特定数据集和分析目标。做出明智的决定需要考虑多个因素。
让我们了解在选择处理缺失值的合适方法时,哪些考量将指导您。
缺失数据的数量与分布
首先要评估的是实际缺失了多少数据。
- 按列百分比: 计算每列中缺失值的百分比。如果一列缺失了非常高的百分比(例如,60%、70% 或更多),用一个计算出的单一值(如均值或中位数)来填充这些空缺可能会引入明显的偏差或噪声。填充的值可能无法很好地代表真实的基础数据,可能扭曲模式和关联。在这种情况下,删除整列可能是一个更直接的做法,承认该特征提供的信息可靠性低。
- 按行百分比: 同样,检查行。如果特定行(代表单个观测值或记录)在多列中都存在缺失值,则它可能包含很少有用信息用于分析。删除此类行(行删除)可能是一个合理的选择,特别是如果您的总行数中只有一小部分受影响。
- 总体缺失量: 考虑整个数据集中缺失值的总百分比。如果只有极小一部分(例如,少于 1-5%)的数据点缺失,并且这些缺失看起来是随机分布的,那么删除受影响的行通常是一个简单且可接受的方案。这不太可能明显偏倚您的结果或大幅减少数据集大小。然而,如果很大比例的行至少有一个缺失值,行删除可能会丢弃太多数据,从而降低分析的统计效力,并且如果缺失并非完全随机,则可能引入偏差。
变量(列)的性质
列中数据的类型影响填充策略。
- 数值数据: 对于包含数字(整数或浮点数)的列,使用
均值 或 中位数 进行填充很常见。
- 如果数据分布大致对称(如钟形曲线),则使用
均值。
- 如果分布偏斜(一侧有长尾)或包含明显异常值,则优先使用
中位数。中位数受极端值的影响小于均值。
- 分类数据: 对于包含类别或标签的列(如表示城市名称、产品类型或“是/否”回答的字符串),使用均值或中位数没有意义。这里最合适的简单填充策略是使用
众数(最常出现的类别)。
用众数填充数值列,或用均值填充分类列,将导致后续分析中的荒谬结果和错误。填充策略应始终与数据类型匹配。
缺失机制(简要提及)
数据为何缺失也可能是一个因素,尽管详细分析这方面通常更复杂。简言之,数据缺失可能因为:
- 完全随机缺失 (MCAR): 一个值缺失的概率与变量本身和数据集中其他变量都无关。这是删除的理想情况,因为引入偏差的可能性较小。
- 随机缺失 (MAR): 一个值缺失的概率仅取决于数据集中 其他已观测变量,而非缺失值本身。简单删除可能在此处引入偏差,因此可能偏好填充。
- 非随机缺失 (MNAR): 一个值缺失的概率取决于缺失值本身或未观测到的因素。这是最具挑战性的情况,因为删除和简单的填充方法都可能导致明显偏差。
作为入门内容,我们主要关注数据的数量和类型。然而,了解缺失的 原因 会影响不同处理策略的有效性,这一点很有用。
对您目标的影响
考虑您的数据工作的目的。
- 分析和报告: 如果您正在进行描述性统计或创建报告,填充值可能会轻微改变汇总统计量(如均值或标准差)。请注意这一点,并可能报告填充前后的结果,或清楚说明缺失数据是如何处理的。
- 机器学习模型: 许多机器学习算法无法直接处理缺失值。删除数据会减少可用于训练模型的信息量。填充允许您保留数据,但可能引入人为模式或降低特征的真实方差。选择会影响模型性能,有时需要同时尝试删除和不同的填充方法。
实际考量与权衡
选择策略涉及平衡相互竞争的优先事项:
- 删除(行或列):
- 优点: 实现简单,避免对缺失数据做假设。
- 缺点: 减少数据集大小(可能丢失有价值信息),如果数据并非完全随机缺失,则可能引入偏差。
- 填充(均值、中位数、众数):
- 优点: 保留所有行和列,通常允许算法无错误运行。
- 缺点: 可能扭曲原始数据分布,降低方差,削弱变量之间的关联,并通过做出假设(例如,假设均值是一个好的替代)可能引入偏差。
以下流程图提供了一个基于缺失数据量和类型而简化的决策指南:
一个流程图,概述了处理列中缺失数据的基本决策过程,其中考虑了缺失百分比和数据类型。
作为初学者,可以从这些简单的策略开始。计算缺失数据的百分比。如果一列大部分缺失,考虑删除它。如果缺失值很少且分散,考虑删除行或对数值数据使用中位数填充,对分类数据使用众数填充。始终记录您的选择及其原因,因为这是可重复数据工作的重要组成部分。