为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

动漫人物 2022-06-28 17:11:37
    ST_NUM    ST_NAME     OWN_OCCUPIED  NUM_BEDROOMS0   104.0     PUTNAM            Y           3.01   197.0    LEXINGTON         NaN          NaN2     NaN    LEXINGTON          N           3.03   201.0    BERKELEY          NaN          1.04   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 .......
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

您可以按每列的 对索引进行切片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]


查看完整回答
反对 回复 2022-06-28
?
明月笑刀无情

TA贡献1828条经验 获得超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 index

ST_NUM                  1     2

ST_NAME                 0      

OWN_OCCUPIED            2   1,3

NUM_BEDROOMS            2   1,4


查看完整回答
反对 回复 2022-06-28
  • 2 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信