🫧 泡泡库 软件下载中心
实时数据

累计下载 1,021 次

在库软件 13 款

数据缺失的几种处理方式

数据基础 更新于 2026-09-23 #缺失值#数据清洗#插补

拿到一份数据,先别急着删空值。缺失本身携带信息,处理方式选错,后面所有分析都会建立在有偏的样本上。下面按「先诊断、再处理、后验证」的顺序展开。

先看缺失比例和缺失位置

打开数据后第一件事是统计每列的缺失数量和比例。可以用几行代码得出每列的缺失计数、缺失占比,再按占比排序。

  • 缺失比例低于 5%:通常可以安全删除缺失行,对整体分布影响很小。
  • 缺失比例在 5% 到 30% 之间:建议做插补,同时保留一个「是否缺失」的标记列。
  • 缺失比例超过 50%:这列的信息量已经很弱,优先考虑整列删除,除非业务上明确知道它关键。

注意「行缺失」和「列缺失」的区别。某一行有 20 列、其中 15 列都是空,这行基本没有分析价值;而某一列只有零星几个空,处理成本很低。先算清楚再动手。

判断缺失是不是随机的

同样比例的空值,成因不同,处理方式完全不同。

  • 完全随机缺失:空值出现与任何变量无关。比如传感器偶发丢包。这类缺失删除或插补都可以。
  • 随机缺失:缺失概率取决于其他已观测变量。比如收入字段的缺失与年龄有关。插补时要利用这些相关变量。
  • 非随机缺失:缺失与它自己的真实值有关。比如高收入人群更不愿填收入。这类缺失最难处理,插补容易系统性偏低。

判断方法很直接:把「是否缺失」当成一个二值标签,看它在其他列上的分布有没有明显差异。比如按性别分组,分别算收入字段的缺失率;如果男女缺失率差很多,就不是完全随机。

删除法的适用边界

删除分两种:删行和删列。

  • 删行适用于缺失完全随机、且缺失行占比很小的情况。删之前先对比删除前后的关键变量均值,差异明显就不要删。
  • 删列适用于整列缺失率过高、或该列对当前分析目标没有贡献的情况。删列前确认它没有被其他计算依赖。

不要为了数据「干净」而删除大量样本。样本量本身就是信息,删到只剩一半,后续结论的稳定性会明显下降。

插补的常用做法

插补不等于随便填个均值,选择取决于变量类型和缺失机制。

  • 均值或中位数插补:最快,但会压缩方差、削弱变量间的相关性。中位数比均值更抗极端值。适合缺失比例低、只做粗略汇总的场景。
  • 众数插补:用于分类变量。缺点是会放大某一类别的占比。
  • 分组插补:按其他变量分组后分别算均值或中位数再填。比如按城市分组填收入。比全局插补更合理,前提是分组变量本身没有缺失。
  • 前向填充或后向填充:适合时间序列。用上一个有效值或下一个有效值补。前提是数据按时间排好序,且相邻时点变化不大。
  • 模型插补:用其他列作为特征,把待补列当作目标训练模型来预测空值。效果通常更好,但要注意别把目标变量本身的信息漏进去造成泄漏。

无论用哪种,插补后保留一个布尔标记列,记录哪些位置是补过的。后续分析可以把标记列作为特征,或单独检查插补值的影响。

插补后必须做的验证

插补完直接跑分析,风险很高。至少做三件事:

  • 对比插补前后的分布。画直方图或算分位数,看形状是否被扭曲。均值插补会让分布向中心收缩,一眼能看出来。
  • 在已知真值的子集上测试。如果数据里有部分完整记录,可以人为挖掉一部分,用同样方法插补,再和真值比较误差。
  • 检查插补值与相关变量的关系。比如插补出的收入应该和年龄、职业保持合理关联,如果补出来全是一个常数,说明方法选错了。

处理缺失没有唯一正确答案。记录下每一步做了什么、为什么这么做,比追求某个「最佳方法」更重要。别人复现你的分析时,能看懂缺失是怎么处理的,结论才站得住。

看完想直接上手?

软件下载即用,遇到问题加客服 QQ 475831049 直接问。