获取每个国家缺失值的比例

Get proportion of missing values per Country

我想找出我的特征缺失值在每个国家和所有年份与 select 个国家的比例。

我试过这个:

df[indicators].isna().mean().sort_values(ascending=False)

但它只给出了每个指标缺失值的比例...

我想要这个输出:

您可以使用 DataFrame.melt 进行整形,然后汇总 mean 个缺失值:

df1 = (df.melt(id_vars='Country Name', value_vars=indicators)
         .set_index('Country Name')['value'].isna()
         .groupby('Country Name')
         .mean()
         .reset_index(name='Prop'))

或通过DataFrame.stack重塑:

df1 = (df.set_index('Country Name')[indicators]
         .stack(dropna=False)
         .isna()
         .groupby('Country Name')
         .mean()
         .reset_index(name='Prop')
        )

或使用自定义函数:

df1 = (df.groupby('Country Name')[indicators]
         .apply(lambda x: np.mean(x.isna().to_numpy(), axis=None))
         .reset_index(name='Prop'))