python中用于检测Python中缺失值的用户定义函数?

    ST_NUM    ST_NAME     OWN_OCCUPIED  NUM_BEDROOMS

0   104.0     PUTNAM            Y           3.0

1   197.0    LEXINGTON         NaN          NaN

2     NaN    LEXINGTON          N           3.0

3   201.0    BERKELEY          NaN          1.0

4   203.0    BERKELEY           Y           NaN

这是我的数据框。我想创建一个用户定义的函数,它返回数据框,该数据框按列和行号显示数据框中缺失值的数量。


输出 df 应该是这样的。


col_name 索引 st_num 2 st_num 6 st_name 8 Num_bedrooms 2 Num_bedrooms 5 Num_bedrooms 7 Num_bedrooms 8 .......


动漫人物
浏览 98回答 2
2回答

www说

您可以按每列的 对索引进行切片isnull以获取索引。也可以使用 stacking 和 groupby。def summarize_missing(df):    # Null counts    s1 = df.isnull().sum().rename('No. Missing')    s2 = pd.Series(data=[df.index[m].tolist() for m in [df[col].isnull() for col in df.columns]],                   index=df.columns,                   name='Index')    # Other way, probably overkill    #s2 = (df.isnull().replace(False, np.NaN).stack().reset_index()    #         .groupby('level_1')['level_0'].agg(list)    #         .rename('Index'))    return pd.concat([s1, s2], axis=1, sort=False)summarize_missing(df)#              No. Missing   Index#ST_NUM                  1     [2]#ST_NAME                 0     NaN#OWN_OCCUPIED            2  [1, 3]#NUM_BEDROOMS            2  [1, 4]

明月笑刀无情

这是另一种方式:m = df.isna().sum().to_frame().rename(columns={0: 'No. Missing'})m['index'] = m.index.map(lambda x: ','.join(map(str, df.loc[df[x].isna()].index.values)))print(m)              No. Missing indexST_NUM                  1     2ST_NAME                 0      OWN_OCCUPIED            2   1,3NUM_BEDROOMS            2   1,4
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python