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

求助:使用Pandas统计CSV文件各列空白/填充单元格数量异常

问题分析与解决建议

1. 检查CSV文件的分隔符是否匹配

你代码里指定了sep='|',但实际CSV文件可能用的是逗号(,)、制表符(\t)或其他分隔符。如果分隔符设置错误,pandas会把整行内容当成单列读取,自然只会输出一列的统计结果。

解决方式:

  • 手动打开CSV文件,确认实际使用的分隔符
  • 修改pd.read_csv的sep参数,或者让pandas自动检测分隔符:
    df = pd.read_csv(file_path, header=None, sep=None, engine='python')
    

2. 处理空字符串类型的空白单元格

你当前用isnull().sum()只能统计标准NaN值,但CSV里的空白单元格可能是空字符串(''),这种情况不会被isnull()识别,会被误判为已填充内容。

解决方式:

  • 读取文件时直接将空字符串转为NaN:
    df = pd.read_csv(file_path, header=None, sep='|', na_values=[''])
    
  • 或者统计时同时覆盖空字符串和NaN的情况:
    blank_counts = df.apply(lambda x: x.isin(['', pd.NA]).sum())
    filled_counts = df.shape[0] - blank_counts
    

3. 确认表头设置是否正确

你使用了header=None,如果CSV文件本身包含表头行,这会导致表头被当作第一行数据,可能干扰列数的正确识别。如果文件有表头,可去掉header=None参数,或指定表头所在行号(比如header=0)。

4. 先验证数据读取是否正确

在统计前先查看数据结构,确认列数是否符合预期:

print(df.shape)  # 输出行数和列数,检查列数是否正确
print(df.head())  # 查看前几行数据,确认列是否被正确拆分

完整修正示例代码

假设需要自动检测分隔符,且空字符串视为空白:

import pandas as pd

file_path = r"C:\Users\andre\OneDrive\Documentos\Farmácia\Python\Cadastro_clientes\cadastro_cli.csv"  
# 自动检测分隔符,同时将空字符串转为NaN
df = pd.read_csv(file_path, header=None, sep=None, engine='python', na_values=[''])

# 统计已填充和空白数量
filled_counts = df.count()
blank_counts = df.isnull().sum()

summary = pd.DataFrame({
    'Filled': filled_counts,
    'Blank': blank_counts
})

print("\nFilled and Blank Counts:")
print(summary)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 05:34:57