You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

pandas中isna()方法使用异常,虚假缺失值如何处理?

pandas中isna()方法使用异常,虚假缺失值如何处理?

嗨,我来帮你捋清楚这个问题~ 首先先纠正一个关键的误解:你用df.isna().count()得到的122根本不是缺失值数量!count()方法的作用是统计每行/列中非缺失值的个数,所以这个122其实是你数据集的总行数,和缺失值完全没关系。而df.isna().sum()才是正确统计每列缺失值总数的方法,从你提供的结果来看,所有列的sum结果都是0,说明你的数据集本来就没有缺失值哦。

不过如果还是担心存在“隐形”的虚假缺失(比如看起来是数字,但实际是字符串形式的空值、或者用特定数字标记的缺失),可以按下面的步骤排查处理:

  • 先检查数据类型,处理字符串形式的缺失标记
    有时候数据集里会用'NA''null'、空字符串这类文本标记缺失,但pandas的isna()不会把它们识别成缺失值。你可以先用df.dtypes查看各列类型,如果有object类型的列,就把这些标记替换成真正的NaN:

    import numpy as np
    # 替换常见的字符串缺失标记
    df.replace(['NA', 'null', ''], np.nan, inplace=True)
    
  • 检查是否用特定数值标记缺失
    有些数据集会用0-999这类特殊数字代表缺失,你可以用df.isin([0, -999])来检查,然后替换成NaN:

    # 示例:把-999替换为缺失值
    df[df == -999] = np.nan
    
  • 重新确认缺失值状态
    处理完上面的步骤后,再用df.isna().sum()统计缺失值,这时候如果有真实的缺失,再根据需求用df.dropna(inplace=True)删除,或者用均值/中位数填充(比如df.fillna(df.mean(), inplace=True))。

回到你的情况,从数据集内容能看到所有单元格都是正常数值,加上df.isna().sum()的结果为0,其实你完全不用担心所谓的“虚假缺失”,之前的困惑只是对count()方法的用法理解错啦~

备注:内容来源于stack exchange,提问作者SmesharikGPT

火山引擎 最新活动