发布:2026-11-01 · TIVIA
人工智能训练师三级数据清洗学习中,“程序执行完成”之后,还要检查判断条件是否符合字段含义。今天用普通Python标量自拟一个例子:同一句 if not value,可能把合法的数字0当缺失,却放过只含空格的字符串。
先写规则,再写条件
先约定本例规则:只有None、空字符串和纯空白字符串算缺失;数字0、字符串“0”和字符串“NA”都保留。NA在这里是允许的文本值,不是缺失标记。这是教学用的字段约定,不是所有数据的通用规则。
原因在于真假判断与业务含义不同。Python中的数字0、None和空字符串都可判为假;非空的空格字符串则可判为真。因此“不是空”的写法必须先说明你要检查什么,不能把真假直接当缺失标签。
六个值逐项验收
| 输入 | 本例判缺失 | 理由 |
|---|---|---|
0 | False | 保留合法零值 |
None | True | 规则指定空对象 |
'' | True | 空字符串 |
' ' | True | 去掉首尾空白后为空 |
'0' | False | 非空文本 |
'NA' | False | 本例允许的文本 |
先猜输出,再运行
def is_missing(value):
# 本例约定:None、空串、纯空白字符串算缺失
return value is None or (
isinstance(value, str) and value.strip() == ""
)
values = [0, None, "", " ", "0", "NA"]
assert [is_missing(v) for v in values] == [False, True, True, True, False, False]
assert bool(0) is False
assert bool(" ") is True
assert is_missing(False) is False
print([is_missing(v) for v in values])
四个断言通过;第一条同时核对六个样例。自测:上面return里的两个主条件之间应填and还是or?是or,因为“None”或“符合规则的字符串”任一成立就判缺失。若用and,会要求一个值同时是None和字符串,漏掉本例缺失值。
本例只覆盖普通Python标量中的上述类型,不处理浮点NaN、日期缺失或表格整列。实际项目要先理解字段约定与数据类型,再选择检测方式并补边界样例;不应直接把本函数套到所有数据。
今天只完成一个学习动作
先写一句字段缺失规则,再各找一个应保留和应判缺失的值,验证代码。不要只记“0不是缺失”,而要能解释判断条件为什么保留它。
本文由TIVIA产品方发布,AI辅助整理并核对来源。TIVIA包含理论题学习与上机代码填空等学习内容;本例围绕数据清洗学习范围重新编写,不是官方真题,不承诺命中、提分或通过。
Tivia