繁体   English   中英

Pandas:每列值的nan百分比

[英]Pandas : Percentage of nan for each value of a column

目标:为df的每一列和每个客户获取缺失值的百分比

我的 df 是关于创建票证的:

          id                type  ...      priority          Client
0     56 113            Incident  ...          Low           client1
1     56 267             Demande  ...          High          client1
2     56 294            Incident  ...          Nan           NaN
3     56 197             Demande  ...          Low           client3
4     56 143             Demande  ...          Nan           client4

第一次尝试:

df.notna().sum()/len(agg_global)*100
Out[29]:                       
id                       97.053453   
type                     76.415869   
priority                 82.626625    
client                   84.596443 

这非常有用,但我想在我的 output 中添加更多详细信息,列中的“客户”维度如下所示:

Output 我想创建:

                           Client1   Client2     Client3      NaN
id                      100.000000   100.000000  100.000000   66.990424
type                     76.415869   66.990424   76.415869    43.761970
status                  100.000000   100.000000  66.990424    76.415869
category                66.990424   43.761970   76.415869     43.761970
entity                   43.761970   100.000000  76.415869    76.415869
source_demande           84.596443   100.000000  76.415869    43.761970

我尝试使用“groupby”,但无法获得 output... 的愿望:

                   id       type  ...      priority         Client
client                            ...                             
True        97.053453  76.415869  ...      29.98632       29.98632

任何建议将被认真考虑。 感谢您的关注 !

您可以删除列Client以不测试缺失值的百分比,通过DataFrame.isna对其进行测试,通过Client聚合平均值并替换NaN以避免丢失它们,最后由DataFrame.T转置:

print (df)
       id      type priority   Client
0     NaN  Incident      Low  client1
1     NaN       NaN     High  client1
2  56 294  Incident      Nan      NaN
3  56 197       NaN      Low  client3
4     NaN   Demande      NaN  client4


df = (df.drop('Client', 1)
        .isna()
        .groupby(df['Client'].fillna('NaN'))
        .mean()
        .rename_axis(None)
        .T)
print (df)
          NaN  client1  client3  client4
id        0.0      1.0      0.0      1.0
type      0.0      0.5      1.0      0.0
priority  0.0      0.0      0.0      1.0

据我所知,可以使用蛮力。 我会尝试使用isna function 和求和来估计每行或每列中的 NaN 数量,然后我会尝试估计百分比。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM