数据集常常是不完整的。你可能会发现数据本应存在的地方有空缺,表示为 NaN (非数字)、null、空单元格,或有时是特定的占位符值,如 999 或 -1。这些缺失值可能对许多分析工具和统计方法造成问题,因为它们通常需要完整的数据。忽略这些值可能导致错误,甚至更糟的是,导致有偏差和不准确的结果。因此,处理缺失数据是数据准备中的一个基本步骤。缺失值出现的原因数据缺失可能有多种原因:数据录入错误: 信息可能未正确记录或在输入时被跳过。设备故障: 传感器或记录设备可能暂时失灵。可选字段: 在调查或表格中,受访者可能选择不回答某些问题。数据收集问题: 数据提取或合并过程中出现的问题可能导致数据空缺。不适用: 有时某个值缺失是因为它确实不适用(例如,未婚人士的“配偶姓名”)。了解数据为何缺失,有时能帮助确定最佳处理策略,尽管确切原因常常不明确。处理缺失数据的常用方法处理缺失值主要有两种方法:删除和填充。1. 删除(移除数据)这包括移除包含缺失值的数据点或特征(列)。行删除: 最直接的方法是移除任何包含至少一个缺失值的行。优点: 易于操作。如果缺失数据量非常小且随机分布,效果会不错。剩余数据集是完整的。缺点: 可能显著缩小数据集的规模,导致信息丢失。如果缺失值不是随机分布的(例如,只有高收入人群跳过了某个问题),移除这些行可能在分析中引入偏差。列(特征)删除: 如果某个特定列的缺失值百分比非常高(例如,超过50-60%),它可能提供的有用信息很少。在这种情况下,你可能决定移除整个列。优点: 如果某个特征大部分为空,这可能是必要的。可以保持其他特征的行完整。缺点: 你会丢失该特征可能包含的任何信息。决定移除的阈值是主观的。2. 填充(补齐值)填充指用替代值替换缺失值。目标是根据现有信息估计一个合理的替代值。均值/中位数/众数填充: 这些是简单的统计填充方法。均值填充: 将缺失的数值替换为该列中非缺失值的平均值(均值)。最适合大致对称分布(没有极端异常值)的数值数据。中位数填充: 将缺失的数值替换为该列中非缺失值的中位数。比均值对异常值更有效,使其成为倾斜数值数据的更好选择。众数填充: 将缺失的分类值(或有时是离散数值)替换为该列中最常出现的值(众数)。这是非数值数据的标准方法。优点: 易于操作。保持数据集的完整大小(不删除行)。缺点: 降低了填充列中数据的方差(分散程度)。扭曲了变量之间的关系(如相关性),因为它假设填充值与该观测值的其他特征是独立的。不考虑不确定性。让我们考虑一个小的例子。想象一个包含年龄的数据集:[25, 30, ?, 35, 28, ?, 40]。已知年龄(25, 30, 35, 28, 40)的均值为 (25+30+35+28+40) / 5 = 31.6。均值填充会将 ? 替换为 31.6。排序后的已知年龄为 [25, 28, 30, 35, 40]。中位数为 30。中位数填充会将 ? 替换为 30。其他填充技术(简要提及): 存在更高级的技术,例如根据其他特征填充缺失值(例如,使用回归)或寻找相似数据点(例如,k-最近邻填充)。这些方法通常提供更好的估计,但更为复杂,超出本介绍性章节的范围。可视化缺失数据在决定策略之前,可视化缺失值的程度和模式通常很有帮助。显示每列缺失值百分比的简单条形图是一个常见的起点。{"layout": {"title": "每特征缺失值百分比", "xaxis": {"title": "特征"}, "yaxis": {"title": "缺失 (%)", "range": [0, 100]}, "plot_bgcolor": "#f8f9fa", "paper_bgcolor": "#ffffff", "font": {"color": "#495057"}}, "data": [{"type": "bar", "x": ["年龄", "收入", "性别", "城市", "上次购买日期"], "y": [5.2, 15.8, 0.5, 0.0, 45.3], "marker": {"color": ["#4dabf7", "#4dabf7", "#4dabf7", "#4dabf7", "#ff8787"], "line": {"color": "#1c7ed6", "width": 1}}}]}该图表显示“上次购买日期”有很高的缺失值百分比,而“城市”则没有。“收入”也有显著的缺失量。此可视化有助于确定哪些列需要优先处理。选择合适的策略没有处理缺失值的唯一最佳方法。选择取决于:缺失数据量: 如果只有一小部分数据缺失(例如,小于1-2%),且数据是随机缺失的,则删除可能是可接受的。对于大量缺失数据,通常倾向于使用填充来避免严重的数据丢失。缺失率极高的列可能是移除的候选。数据类型: 在简单的填充方案中,对数值数据使用均值/中位数,对分类数据使用众数。缺失原因(如果已知): 如果缺失是系统性的(非随机),简单的填充或删除可能引入显著偏差。这是一个较高级的话题,但了解缺失的模式很重要。分析目的: 一些分析模型对缺失数据处理方法比其他模型更敏感。记录你如何处理缺失值是一项重要的做法,因为这个决定会影响你分析的最终结果。可以从简单的方法开始,通常是数值特征使用中位数填充,分类特征使用众数填充,并留意潜在的缺点。