一句话定义
缺失值表示「这一格没有值」,在输出表里显示为 ? 或空白。它是一种独立的状态,不是某个具体的值。
| 它是 | 它不是 |
|---|---|
| 没有值 | 0 – 零是一个确定的数字,表示金额为零 |
| 没有值 | 空字符串 – 长度为零的文本,KNIME 认为它有值 |
| 没有值 | 一个空格 – 那是一个字符,更不是缺失值 |
「处理过缺失值了还是有空格子」的标准答案就在这里。那些格子里是空字符串或空格,Missing Value 节点不会碰它们。要先用 String Manipulation 把这类值转成真正的空,再处理。
它在各种操作里的行为
| 操作 | 缺失值会怎样 |
|---|---|
| Row Filter 按条件筛选 | 普通条件匹配不上它,所以这些行被静默丢掉。要保留得单独加一条「为空值」的条件 |
| GroupBy 聚合 | 默认跳过。意味着求平均时分母是有值的行数,不是总行数 |
| Joiner 关联 | 关联列为空的行配不上,内连接下会被丢弃 |
| String Manipulation 文本函数 | 作用在缺失值上,结果仍然是缺失值 – 不报错,也不会变成空字符串 |
| Rule Engine 规则判断 | 所有条件都不命中,如果没写兜底规则,结果列会是缺失值 |
| Sorter 排序 | 可以选排在最前还是最后 |
这张表里有四条是「安静地出事」 – 不报错,只是结果和你以为的不一样。这是缺失值最需要留意的地方。
缺失值从哪来
- 源数据本来就没有。人工填报漏填、这个字段对这条记录不适用、系统导出时就是空的。
- 转换过程产生的。文本转数字失败且选了「输出缺失值继续跑」,或者日期格式不对转不出来。这一类最危险 – 你以为流程跑通了,实际上有一批数据悄悄变成了空。选了这种容错选项,下游一定要加一步统计缺失值数量。
- 关联没配上产生的。左连接保留了未匹配的行,右表带过来的字段自然是空的。这种空是有含义的 – 它告诉你主数据里查无此人。
处理之前先分清两件事
「这台设备本来就没有采购价」和「这一格漏填了」,在数据里长得一模一样,但处理方式完全相反。前者应该保留为空并在口径里说明,后者才该补。
一律填 0 或填均值是最省事也最容易出事的做法 – 它把「不知道」变成了一个看起来确定的数字。做财务和稽核报表时尤其要克制,凭空造出来的数字一旦进了报表,后面没人分得清哪些是真的。
相关内容
| 页面 | 相关点 |
|---|---|
| Missing Value 缺失值处理 | 六种填法的适用场景与取舍 |
| Row Filter 行筛选器 | 缺失值不被普通条件匹配 |
| GroupBy 分组汇总 | 聚合时默认跳过对均值口径的影响 |
| Rule Engine 规则引擎 | 没写兜底规则会得到缺失值 |

