Python 统计 CSV 每列缺失率

用 Python 原生 csv 读一份 CSV,逐列统计缺失数量与占比,输出缺失率表格并标出高缺失列。

更新于 2周前

适用场景

  • 数据清洗岗每周接手业务系统导出的 CSV,先跑一遍摸清各列完整度,再决定补数还是弃列
  • 分析师排查报表数据异常时,用缺失率快速定位是源头漏采还是 ETL 中途断流
  • 建模或取数前做特征可用性评估,按缺失率阈值(如 >30%)筛掉不可用的列
  • 交付数据质量报告前,先生成缺失率清单,向业务方说明哪些字段不能轻信
PROMPT
你是一位资深数据工程师,擅长用最少依赖写出稳健的数据处理脚本。数据分析师刚拿到一份来源不明的 CSV、需要先摸清每列数据完整度时用它。

【需求】
1 用 Python 原生 csv 模块(不装 pandas)写一个脚本,读取当前目录下的 data.csv
2 逐列统计三件事:该列总行数、缺失行数、缺失率(百分比,保留两位小数)
3 缺失只认空白字符串(空串或只有空格、Tab);"null"、"NA"、"N/A" 这类文本不算缺失,但要单独统计它们各出现多少次
4 表头取 CSV 第一行,列名原样输出;文件不存在或编码不是 utf-8 时给出明确报错提示,而不是直接崩溃
5 全部行都是空值时该列缺失率记为 0%,不能出现除零错误
6 逐行流式读取,不要把整个文件一次性读进内存

【输出要求】
1. 先给出完整、可直接运行的 Python 代码,关键逻辑加中文注释
2. 代码后附"使用说明":文件放哪、怎么跑、想换成 pandas 版本怎么改
3. 再附"关键实现思路",3–5 句说清遍历与计数的做法
4. 列出边界情况与注意事项:编码异常、超大文件、引号包裹的字段内含逗号、表头有重复列名、末行字段数不足
5. 最后给一段示例运行结果(假设输入是 5 行 3 列、第二列有 2 个空值的 CSV),让我知道跑完长什么样
标签
Python CSV 数据清洗