发布:2026-11-11 · TIVIA
人工智能训练师三级数据清洗学习中,遇到重复值先别直接删行。今天只练一个自拟场景:同一编号在不同日期有记录,要求只删除完全重复的记录,保留不同日期的两条。
本例每行只有编号和日期文本。第一条是A、11-01;第二条是A、11-02;第三条又是A、11-01。第一条与第三条整行相同,第二条日期不同。是否重复取决于指定的比较字段,不能只看编号。
先看同一编号的三条记录
| 行 | 编号 | 日期 | 按本例规则 |
|---|---|---|---|
| 1 | A | 11-01 | 保留 |
| 2 | A | 11-02 | 日期不同,保留 |
| 3 | A | 11-01 | 与第1行相同,去重 |
若用“编号加日期”作为去重键,保留两条;若只数不同编号,结果是一个A。两个数字的计算口径不同。把同编号直接当作重复行,会删掉本例要求保留的不同日期记录。
四条断言核清口径
rows = [("A", "11-01"), ("A", "11-02"), ("A", "11-01")]
unique_rows = list(dict.fromkeys(rows))
assert len(rows) == 3
assert unique_rows == [("A", "11-01"), ("A", "11-02")]
assert len({row[0] for row in rows}) == 1
assert rows == [("A", "11-01"), ("A", "11-02"), ("A", "11-01")]
print(unique_rows)
四条断言通过:原始三条、整行去重后两条、不同编号只有一个、原输入保留。输出是本例字段规则的验收,不是软件学习效果。
自拟填空:本例只删完全重复记录,比较键应选“编号”,还是“编号与日期”?应选编号与日期。然后说出理由:不同日期是本例保留规则的一部分。
代码用可哈希的字符串元组和dict.fromkeys保留第一次出现的整行,Python 3.7及以上字典保持插入顺序。本例未处理缺失值、时区、大小写、拼写差异或真实业务主键,不能把示例直接当作所有数据的清洗规则。实际任务要先核字段含义,再决定比较哪些字段。
完成一次可解释的自测
今天只做一个动作:先写一句“什么才算重复”,列出一条应删与一条应留,再写代码并核输出。去重前先确定键,去重后再核留下的记录,而不只看行数变少。
本文由TIVIA产品方发布,AI辅助整理并核对来源。TIVIA包含理论题学习与上机代码填空等学习内容;本例围绕数据清洗学习范围自拟,不是官方真题,不承诺命中、提分或通过。
查看实操体验范围 · 免费理论练习(固定样本,未必包含本文同题;完整版范围以产品说明为准)。
技术参考:Python官方字典与fromkeys文档。
Tivia