PowerBI中如何统计表格每列的空单元格与非空单元格数量?
列空值/非空值统计实现方案
以下分别给出Excel、Python Pandas、SQL三种常用场景的实现方法,统计逻辑完全匹配Excel的COUNTA、COUNTBLANK函数规则:
1. Excel 原生实现
适合中小体量数据,无需写代码:
- 非空单元格统计:在目标列对应统计单元格输入公式
=COUNTA(列范围),例:统计A列全列非空数量填=COUNTA(A:A) - 空单元格统计:输入公式
=COUNTBLANK(列范围),例:统计A列全列空值数量填=COUNTBLANK(A:A) - 批量多列统计:写完第一列的两个统计公式后,选中两个单元格向右拖拽,即可自动适配其他列的统计范围
- 最后把所有列的统计结果整理成单独的汇总表即可
2. Python Pandas 实现
适合超大体量(10万行以上)Excel无法流畅打开的数据:
import pandas as pd # 读取数据,csv格式用read_csv,xlsx格式用read_excel,替换为你自己的文件路径 df = pd.read_csv("客户数据.csv") # 可选:把纯空格、空字符串识别为空值,避免统计误差 df = df.replace(r'^\s*$', pd.NA, regex=True) # 生成统计结果 stat_df = pd.DataFrame({ "列名": df.columns, "非空单元格数量": df.count().values, "空单元格数量": df.isna().sum().values }) # 打印结果或者导出为Excel文件 print(stat_df) # stat_df.to_excel("列统计结果.xlsx", index=False)
3. SQL 实现
适合数据存储在业务数据库中的场景,以下为MySQL语法示例:
-- 每列对应一段查询,多列用UNION ALL拼接 SELECT '客户ID' AS 列名, COUNT(`客户ID`) AS 非空单元格数量, SUM(CASE WHEN `客户ID` IS NULL OR TRIM(`客户ID`) = '' THEN 1 ELSE 0 END) AS 空单元格数量 FROM customer_data UNION ALL SELECT '客户姓名' AS 列名, COUNT(`客户姓名`) AS 非空单元格数量, SUM(CASE WHEN `客户姓名` IS NULL OR TRIM(`客户姓名`) = '' THEN 1 ELSE 0 END) AS 空单元格数量 FROM customer_data
- 其他数据库(PostgreSQL、Oracle等)语法基本一致,仅需调整空值判断的内置函数即可
内容的提问来源于stack exchange,提问作者Lenny
相关产品推荐
相关产品推荐

