J'ai un dataframe qui a plusieurs colonnes. Je voudrais parcourir les colonnes, en comptant pour chaque colonne le nombre de valeurs nulles et produire un nouveau dataframe qui affiche la somme des valeurs isnull à côté des noms d'en-tête de colonne.

Si je fais:

for col in main_df:
    print(sum(pd.isnull(data[col])))

J'obtiens une liste du nombre nul pour chaque colonne:

0
1
100

Ce que j'essaye de faire est de créer un nouveau dataframe qui a l'en-tête de colonne à côté du nombre nul, par exemple

col1 | 0
col2 | 1
col3 | 100
3
joshi123 16 janv. 2017 à 20:18

2 réponses

Meilleure réponse

Essaye ça:

In [71]: df
Out[71]:
     a    b  c
0  NaN  7.0  0
1  0.0  NaN  4
2  2.0  NaN  4
3  1.0  7.0  0
4  1.0  3.0  9
5  7.0  4.0  9
6  2.0  6.0  9
7  9.0  6.0  4
8  3.0  0.0  9
9  9.0  0.0  1

In [72]: pd.isnull(df).sum()
Out[72]:
a    1
b    2
c    0
dtype: int64

Ou:

In [76]: df.isnull().sum()
Out[76]:
a    1
b    2
c    0
dtype: int64

Vous pouvez en créer un DF:

In [78]: df.isnull().sum().to_frame('nulls')
Out[78]:
   nulls
a      1
b      2
c      0
8
MaxU 16 janv. 2017 à 17:20

Si le nombre de colonnes de votre dataframe est supérieur à 10, vous vous retrouverez avec les colonnes du milieu laissées en dehors de la sortie. Vous pouvez imprimer chaque colonne en utilisant:

nulls = df.isnull().sum().to_frame()
for index, row in nulls.iterrows():
    print(index, row[0])
0
Pierre Delecto 1 mai 2020 à 21:54