节点手册 · 数据清洗

KNIME Missing Value 缺失值处理用法

Manipulation → Column → Transform

统一处理表里的空值:删掉、填固定值、填均值、或者用上一行的值往下补。填法选错会直接改变分析结论,这个节点值得多花两分钟。

它解决什么问题

缺失值不只是难看。它会让求和求平均的口径变模糊、让 Row Filter 的条件匹配不上、让 Joiner 关联失败。这个节点把整张表的空值一次性按规则处理掉。

先搞清楚为什么空,再决定怎么填。「这台设备本来就没有采购价」和「这一格漏填了」是两回事,前者该保留为空并在口径里说明,后者才该补。一律填 0 或填均值是最省事也最容易出错的做法 – 它把「不知道」变成了一个看起来确定的数字。

它在流程里的位置

Excel Reader读进来
Missing Value补空值
Row Filter筛选
GroupBy汇总

要放在筛选和汇总之前。空值会让 Row Filter 的条件匹配不上、让求平均的分母变成有值的行数,先处理掉口径才清楚。

基本信息

英文原名Missing Value
中文名称缺失值处理(iModel 中文界面)
节点库位置Manipulation → Column → Transform
输入端口1 个数据表
输出端口1 个
是否改变行数只有选了「删除整行」才会变

配置项逐条

  • 按类型设默认Default 标签页

    给数值列、文本列、日期列各设一个通用处理方式。列很多且规则一致时省事。

  • 按列单独设Column Settings 标签页

    把需要特殊对待的列单独加进来,覆盖上面的默认值。实际项目里基本都要用到这一页 – 金额列和状态列的填法不可能一样。

  • Remove row删除整行

    这一列为空就整行不要。注意它删的是整行,不只是这一格 – 其他列的有效数据会一起没。行数会变,用完对一下。

  • Fix value填固定值

    填 0、填「未知」、填某个默认编码。最可控的一种,也最容易被滥用。金额列填 0 意味着你在断言这笔钱是零,而不是不知道。

  • Mean / Median / Most frequent均值 / 中位数 / 众数

    用这一列已有值的统计量来补。做建模的常规手段,做财务和稽核报表要慎用 – 你等于凭空造了数据,出报表时必须在口径里说明。有极端值时中位数比均值稳。

  • Previous / Next value取上一个 / 下一个非空值

    用相邻行的值填。处理 Excel 合并单元格的标准解法 – 合并单元格读进来只有第一行有值,用「取上一个非空值」正好补齐。

    前提是行序必须正确。这种填法完全依赖当前行的顺序,用之前先确认没被排序打乱。

Missing Value 配置对话框 · 按类型设默认
数值列Number
不处理删除整行填固定值均值中位数
文本列String
不处理填固定值众数取上一个非空值
按列单独设Column Settings 标签页
把需要特殊对待的列加进来,覆盖上面的默认 实际项目里基本都要用到这一页。金额列和状态列的填法不可能一样 – 前者填 0 是在断言这笔钱是零,后者填「未知」通常没问题。

三个常见坑

  1. 空字符串不是缺失值。单元格里是一个空格或者长度为零的文本,KNIME 认为它有值,这个节点不会碰它。先用 String Manipulation 把这类值转成真正的空,再处理。这是「明明处理过了还是有空格子」的最常见原因。
  2. 用均值填完,后面的统计全变了。填进去的值会参与后续所有计算。标准差变小、分布变窄,如果这批数据要拿去做判断,结论可能被填法带偏。填之前先看这一列缺了多少 – 缺一两个和缺三成完全是两回事。
  3. 用「取上一个非空值」但没先排序。行序不对,补出来的值就是隔壁不相干记录的值,而且看不出来。这种错误特别隐蔽 – 配合 Sorter 一起用。

什么时候该换别的节点

情况换成
只想知道哪些列缺了多少,先不处理统计类节点,先体检再决定
填充规则依赖别的列,比如 A 空时取 BRule Engine 或 Column Expressions
要从另一张对照表里取值来补Joiner 关联后再用 Rule Engine 择一
只是想把空值行挑出来单独看Row Filter,条件用「为空值」

处理完还是有空格子

多半是空字符串而不是真正的缺失值。先确认那一格里到底是空还是一个看不见的空格。

iModel 专属客服
网页直接对话,无需微信
4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码