人工智能训练师三级:删缺失前,先确定检查哪些列

TIVIA人工智能训练师三级缺失清理:五条断言比较dropna全部列与subset指定列的保留范围。

发布:2026-11-15 · TIVIA

人工智能训练师三级实操中,看到缺失就直接删行,可能把仍有用的记录也删掉。TIVIA今天用三行自拟数据比较:检查所有列,和只检查成绩列,保留的行有什么不同?

本例raw有score和note两列。A的score是80、note缺失;B的score缺失、note为checked;C的score是90、note为checked。raw.dropna()默认检查所有列,只留下C;raw.dropna(subset=["score"])只根据score判断,留下A和C。

subset指定的是判断缺失时检查的列,不是只输出这些列。第二个结果仍有score和note两列,A的note仍为缺失。返回结果的A、C索引保留;这里没有重编索引,也没有改写原表。

自拟三行,核对五个结果

import pandas as pd
raw = pd.DataFrame({"score": [80, None, 90],
                    "note": [None, "checked", "checked"]},
                   index=["A", "B", "C"])
all_columns = raw.dropna()
score_only = raw.dropna(subset=["score"])
assert all_columns.index.tolist() == ["C"]
assert score_only.index.tolist() == ["A", "C"]
assert pd.isna(score_only.loc["A", "note"])
assert raw.index.tolist() == ["A", "B", "C"]
assert raw.isna().sum().to_dict() == {"score": 1, "note": 1}
print("all columns:", all_columns.index.tolist())
print("score only:", score_only.index.tolist())

样例在已有pandas 2.3.1执行通过,需pandas环境;断言只证明本例行为,不代表学习效果。

先写清哪些字段是本次任务必需的,再确定检查范围。如果本次规则只要求score有效,note缺失不必由这条规则删行;如果两列都必需,就要检查两列。是否删行属于业务选择,不能靠函数默认值代替判断。

自拟填空:只按score列判断缺失,应填raw.dropna(subset=["score"])。自测:A会保留吗?会。它的note会自动填好吗?不会。请同时检查保留索引、列是否保留和剩余缺失位置。

本例使用pandas 2.3.1、默认按行删除以及默认any条件,None被识别为缺失。空字符串、仅含空格的文本不因此自动等同于缺失;特殊缺失标记需要另作规范。本例不讨论按列删除、how="all"或阈值规则。

今天的验收动作:先预测两种写法分别留下哪些行,再运行五条断言。把“删除判断范围”和“输出保留字段”分别写清,避免以为subset会删除其他列。

本文由TIVIA产品方发布,AI辅助整理并执行自拟代码核验。TIVIA包含理论题学习与上机代码填空等学习内容。本文借产品实操缺失清理作基础延伸,非原题照搬、官方真题或通过考试承诺;产品完整范围以实际说明为准。

实操体验范围 · 免费理论练习(固定样本未必含本文同题)。

技术参考:pandas官方dropna文档。

微信学习群二维码

扫码加入学习群

使用微信扫描上方二维码