You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何快速统计数据表中数百列的每列null值占比?

快速计算数据表各列缺失值占比的方法

下面按常用工具给出简便实现方案,直接套用即可:

Python (Pandas)

Pandas内置方法可以一行搞定大表,效率很高:

import pandas as pd

# 读取数据表(以CSV为例,其他格式同理)
df = pd.read_csv('your_data.csv')

# 计算每列缺失值占比,保留两位小数并按占比降序排序
null_ratio = (df.isnull().sum() / len(df) * 100).round(2).sort_values(ascending=False)

# 打印结果,也可以导出成CSV报告
print(null_ratio)
null_ratio.to_csv('null_ratio_report.csv', header=['缺失值占比(%)'])

SQL

如果数据存在数据库中,不用导出就能直接查询,列太多时可以用动态SQL自动生成语句:

手动列名版本(适合少量列)

SELECT 
    SUM(CASE WHEN col1 IS NULL THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS col1_null_ratio,
    SUM(CASE WHEN col2 IS NULL THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS col2_null_ratio,
    -- 依次添加所有需要统计的列
    SUM(CASE WHEN colN IS NULL THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS colN_null_ratio
FROM your_table;

动态SQL版本(MySQL为例,自动适配所有列)

SELECT GROUP_CONCAT(
    CONCAT(
        'SUM(CASE WHEN `', column_name, '` IS NULL THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS `', column_name, '_null_ratio`'
    ) SEPARATOR ', '
) INTO @sql
FROM information_schema.columns
WHERE table_schema = 'your_database' AND table_name = 'your_table';

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

R语言

用dplyr+tidyr组合,代码直观易读:

library(dplyr)
library(tidyr)

# 读取数据
df <- read.csv('your_data.csv')

# 计算各列缺失值占比并排序
null_ratio <- df %>%
  summarise(across(everything(), ~ sum(is.na(.)) / n() * 100)) %>%
  pivot_longer(everything(), names_to = '列名', values_to = '缺失值占比(%)') %>%
  arrange(desc(`缺失值占比(%)`))

print(null_ratio)

内容的提问来源于stack exchange,提问作者mgh0104

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:22:35