Comment calculer le nombre de valeurs nan dans une pandas DataFrame?
Quel est le meilleur moyen de prendre en compte (pas un nombre) nan valeurs dans une pandas DataFrame?
Le code suivant:
import numpy as np
import pandas as pd
dfd = pd.DataFrame([1, np.nan, 3, 3, 3, np.nan], columns=['a'])
dfv = dfd.a.value_counts().sort_index()
print("nan: %d" % dfv[np.nan].sum())
print("1: %d" % dfv[1].sum())
print("3: %d" % dfv[3].sum())
print("total: %d" % dfv[:].sum())
Sorties:
nan: 0
1: 1
3: 3
total: 4
Alors que la sortie désirée est:
nan: 2
1: 1
3: 3
total: 6
Je suis en utilisant les pandas 0.17 avec Python 3.5.0 avec Anaconda 2.4.0.
Vous devez vous connecter pour publier un commentaire.
Si vous voulez compter que NaN valeurs dans la colonne
'a'
d'un DataFramedf
, utilisation:Ici
count()
nous dit que le nombre de non-valeurs NaN, et c'est soustrait du nombre total de valeurs (donné parlen(df)
).À compter des valeurs NaN en chaque colonne de
df
, utilisation:Si vous souhaitez utiliser
value_counts
, de lui dire pas à la baisse des valeurs NaN par la mise endropna=False
(ajouté en 0.14.1):Cela permet à l'valeurs manquantes dans la colonne à être compté trop:
Le reste de votre code devrait alors fonctionner comme vous le souhaitez (à noter qu'il n'est pas nécessaire de faire appel à
sum
; justeprint("nan: %d" % dfv[np.nan])
suffit).dfv.sum()
compter toutes les valeurs. Ou même de manière plus efficace, il suffit de cocherlen(dfd)
.De compter simplement les valeurs null, vous pouvez utiliser
isnull()
:Ici
a
est le nom de la colonne, et il y a 2 occurrences de la valeur null dans la colonne.Un bon nettoyage de façon de compter tous NaN dans toutes les colonnes de votre dataframe serait ...
À l'aide d'une somme unique, vous obtenez le nombre de NaN pour chaque colonne. La deuxième somme, sommes ceux de la colonne sommes.
Encore une autre façon de compter les tous les nans un df:
num_nans = df.size - df.count().sum()
Horaires:
imprime:
donc à peu près équivalent
si vous voulez seulement le résumé de nulle valeur pour chaque colonne, en utilisant le code suivant
df.isnull().sum()
si vous voulez savoir combien de valeurs null dans le bloc de données à l'aide de code suivant
df.isnull().sum().sum() # calculate total