DansR, je peux rapidement voir le nombre de données manquantes à l'aide de la commande summary
, mais la méthode équivalente pandas
DataFrame, describe
ne rapporte pas ces valeurs.
Je suppose que je peux faire quelque chose comme
len(mydata.index) - mydata.count()
pour calculer le nombre de valeurs manquantes pour chaque colonne, mais je me demande s'il existe un meilleur idiome (ou si mon approche est même correcte).
describe
et info
indiquent tous deux le nombre de valeurs non manquantes.
In [1]: df = DataFrame(np.random.randn(10,2))
In [2]: df.iloc[3:6,0] = np.nan
In [3]: df
Out[3]:
0 1
0 -0.560342 1.862640
1 -1.237742 0.596384
2 0.603539 -1.561594
3 NaN 3.018954
4 NaN -0.046759
5 NaN 0.480158
6 0.113200 -0.911159
7 0.990895 0.612990
8 0.668534 -0.701769
9 -0.607247 -0.489427
[10 rows x 2 columns]
In [4]: df.describe()
Out[4]:
0 1
count 7.000000 10.000000
mean -0.004166 0.286042
std 0.818586 1.363422
min -1.237742 -1.561594
25% -0.583795 -0.648684
50% 0.113200 0.216699
75% 0.636036 0.608839
max 0.990895 3.018954
[8 rows x 2 columns]
In [5]: df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 10 entries, 0 to 9
Data columns (total 2 columns):
0 7 non-null float64
1 10 non-null float64
dtypes: float64(2)
Pour obtenir le décompte des disparus, votre solution est correcte
In [20]: len(df.index)-df.count()
Out[20]:
0 3
1 0
dtype: int64
Tu pourrais faire ça aussi
In [23]: df.isnull().sum()
Out[23]:
0 3
1 0
dtype: int64
Ce n'est pas un résumé complet, mais cela vous donnera une idée rapide de vos données au niveau des colonnes.
def getPctMissing(series):
num = series.isnull().sum()
den = series.count()
return 100*(num/den)
En outre, pour obtenir le pourcentage manquant dans la colonne DataFrame, la combinaison des réponses @Jeff et @ userS ci-dessus vous permet d'obtenir:
df.isnull().sum()/len(df)*100
Je ne peux pas encore faire de commentaires, mais ajouter quelque chose à la réponse de Jeff, mais Si vous ne vous souciez pas des colonnes qui contiennent Nan et que vous vouliez simplement vérifier dans l'ensemble. valeur.
result = df.isnull().sum().sum()
result > 0
une série n'aurait besoin que d'un .sum () et un panel () aurait besoin de trois