代码之家  ›  专栏  ›  技术社区  ›  Jonathan

Python-dataframe:如何只计算和显示dataframe中缺失值的数量?

  •  1
  • Jonathan  · 技术社区  · 7 年前

    我想问一下,如何计算和显示数据帧中丢失值的数量? 我正在使用: df.isna().sum() 但它将显示所有列,包括非缺失值列。我如何在数据帧中只计算和显示缺少值的列,并按降序计算值?

    非常感谢!

    2 回复  |  直到 7 年前
        1
  •  1
  •   jezrael    7 年前

    在我看来,最简单的方法就是删除 0 boolean indexing 然后 sort_values :

    s = df.isna().sum()
    s = s[s != 0].sort_values(ascending=False)
    

    any True (一) NaN

    df1 = df.isna()
    s = df1.loc[:, df1.any()].sum().sort_values(ascending=False)
    

    样品:

    df = pd.DataFrame({
            'A':list('abcdef'),
             'B':[np.nan,5,np.nan,5,5,np.nan],
             'C':[7,8,9,np.nan,2,3],
             'D':[1,3,5,7,1,0],
             'E':[np.nan,3,6,9,2,np.nan],
             'F':list('aaabbb')
    })
    
    s = df.isna().sum()
    s = s[s != 0].sort_values(ascending=False)
    print (s)
    B    3
    E    2
    C    1
    dtype: int64
    
        2
  •  1
  •   Alexander    7 年前

    pipe 要从总计中删除零值:

    >>> df.isnull().sum().sort_values(ascending=False).pipe(lambda s: s[s > 0])
    B    3
    E    2
    C    1
    dtype: int64