Pandas中统计含非常规缺失值的列缺失占比及代码问题排查
统计DataFrame中自定义缺失值的占比
你的问题出在类型不匹配:如果列是数值类型,df=='N/A'会返回全False,因为数值和字符串无法匹配,自然统计不到'N/A'的数量。另外你还没处理0.0和'-'这两类缺失值,下面是两种可靠的解决方法:
方法一:统一替换为NaN后统计
先把所有需要视为缺失值的条目转换成Pandas标准的NaN,再统一统计:
import pandas as pd # 定义所有需要识别为缺失值的内容 missing_values = ['N/A', '-', 0.0] # 将目标值替换为NaN df_clean = df.replace(missing_values, pd.NA) # 统计每列缺失值数量 mis_val = df_clean.isna().sum() # 计算缺失值占比(百分比) mis_val_percent = 100 * mis_val / len(df_clean) # 整理成结果表查看 missing_stats = pd.DataFrame({ '缺失值数量': mis_val, '缺失值占比(%)': mis_val_percent.round(2) }) print(missing_stats)
方法二:直接多条件统计
如果不想修改原DataFrame,可以用isin()配合isna()直接统计:
# 统计原生NaN数量 + 自定义缺失值数量 mis_val = df.isna().sum() + df.isin(missing_values).sum() mis_val_percent = 100 * mis_val / len(df)
注意:这种方法要确保列类型能匹配目标值,比如数值列里的'N/A'和'-'会被isin()忽略,所以方法一更稳妥。
内容的提问来源于stack exchange,提问作者Stephany
相关产品推荐
相关产品推荐

