
Cet article décrit comment vérifier si pandas.DataFrame et Series contiennent des valeurs manquantes et compter le nombre de valeurs manquantes et non manquantes.
- Détecter les valeurs manquantes avec isnull() et isna()
- Vérifier si tous les éléments d’une ligne et d’une colonne manquent de valeurs
- Vérifier si une ligne et une colonne contiennent au moins une valeur manquante
- Compter les valeurs manquantes dans chaque ligne et colonne
- Compter les valeurs non manquantes dans chaque ligne et colonne
- Compter le nombre total de valeurs manquantes
- Compter le nombre total de valeurs non manquantes
- Vérifiez si pandas.DataFrame contient au moins une valeur manquante
- Pour les pandas.Série
Consultez les articles suivants pour savoir comment supprimer et remplacer les valeurs manquantes.
Consultez les articles suivants sur la façon de compter les éléments qui remplissent certaines conditions, pas seulement NaN.
Notez que non seulement NaN (Not a Number) mais aussi None est traité comme une valeur manquante dans les pandas.
Par exemple, lisez un fichier CSV avec des valeurs manquantes avec read_csv(). N’utilisez que les trois premières rangées.
import pandas as pd
df = pd.read_csv('data/src/sample_pandas_normal_nan.csv')[:3]
print(df)
# name age state point other
# 0 Alice 24.0 NY NaN NaN
# 1 NaN NaN NaN NaN NaN
# 2 Charlie NaN CA NaN NaN
Détecter les valeurs manquantes avec isnull() et isna()
pandas.DataFrame et Series ont les méthodes isnull() et isna(). Des exemples de pandas.Series sont présentés à la fin. Notez que la méthode isnan() n’est pas fournie.
Vrai pour les valeurs manquantes, Faux pour les valeurs non manquantes :
print(df.isnull())
# name age state point other
# 0 False False False True True
# 1 True True True True True
# 2 False True False True True
print(df.isna())
# name age state point other
# 0 False False False True True
# 1 True True True True True
# 2 False True False True True
isnull() est un alias pour isna(), dont l’utilisation est la même. isnull() est principalement utilisé dans cet article, mais vous pouvez le remplacer par isna().
notnull() et notna() sont également fournis, qui renvoient True si la valeur n’est pas manquante et False si la valeur est manquante. notnull() est un alias pour notna()
print(df.notnull())
# name age state point other
# 0 True True True False False
# 1 False False False False False
# 2 True False True False False
print(df.notna())
# name age state point other
# 0 True True True False False
# 1 False False False False False
# 2 True False True False False
Notez que NaN renvoie toujours False pour == et True pour !=.
print(df == float('nan'))
# name age state point other
# 0 False False False False False
# 1 False False False False False
# 2 False False False False False
print(df != float('nan'))
# name age state point other
# 0 True True True True True
# 1 True True True True True
# 2 True True True True True
Vérifier si tous les éléments d’une ligne et d’une colonne manquent de valeurs
all() renvoie True si tous les éléments de chaque ligne et colonne sont True.
En appelant all() à partir du résultat de isnull(), vous pouvez vérifier si tous les éléments de chaque ligne et colonne manquent de valeurs.
Par défaut, il est appliqué aux colonnes. Si l’argument axis=1, il est appliqué aux lignes.
print(df.isnull().all())
# name False
# age False
# state False
# point True
# other True
# dtype: bool
print(df.isnull().all(axis=1))
# 0 False
# 1 True
# 2 False
# dtype: bool
Vérifier si une ligne et une colonne contiennent au moins une valeur manquante
any() renvoie True s’il y a au moins un True dans chaque ligne et colonne.
En appelant any() à partir du résultat de isnull(), vous pouvez vérifier si chaque ligne et colonne contient au moins une valeur manquante.
Par défaut, il est appliqué aux colonnes. Si l’argument axis=1, il est appliqué aux lignes.
print(df.isnull().any())
# name True
# age True
# state True
# point True
# other True
# dtype: bool
print(df.isnull().any(axis=1))
# 0 True
# 1 True
# 2 True
# dtype: bool
Compter les valeurs manquantes dans chaque ligne et colonne
sum() calcule la somme des éléments pour chaque ligne et colonne.
Étant donné que sum() est calculé comme True=1 et False=0, vous pouvez compter le nombre de valeurs manquantes dans chaque ligne et colonne en appelant sum() à partir du résultat de isnull().
Vous pouvez compter les valeurs manquantes dans chaque colonne par défaut, et dans chaque ligne avec axe=1.
print(df.isnull().sum())
# name 1
# age 2
# state 1
# point 3
# other 3
# dtype: int64
print(df.isnull().sum(axis=1))
# 0 2
# 1 5
# 2 3
# dtype: int64
Compter les valeurs non manquantes dans chaque ligne et colonne
count() compte le nombre de valeurs non manquantes (= valeurs existantes) dans chaque ligne et colonne.
Appelez-le directement depuis le pandas.DataFrame d’origine, et non depuis le résultat de isnull().
Vous pouvez compter les valeurs non manquantes dans chaque colonne par défaut et dans chaque ligne avec axe=1.
print(df.count())
# name 2
# age 1
# state 2
# point 0
# other 0
# dtype: int64
print(df.count(axis=1))
# 0 3
# 1 0
# 2 2
# dtype: int64
Compter le nombre total de valeurs manquantes
Vous pouvez obtenir toutes les données sous la forme d’un tableau NumPy numpy.ndarray avec l’attribut values de pandas.DataFrame.
print(df.isnull().values)
# [[False False False True True]
# [ True True True True True]
# [False True False True True]]
print(type(df.isnull().values))
# <class 'numpy.ndarray'>
Contrairement à pandas.DataFrame, sum() de numpy.ndarray calcule la somme de tous les éléments par défaut.
Par conséquent, en appelant sum() à partir de l’attribut values (numpy.ndarray) du résultat de isnull(), vous pouvez obtenir le nombre total de valeurs manquantes.
print(df.isnull().values.sum())
# 10
Compter le nombre total de valeurs non manquantes
Vous pouvez obtenir le nombre total d’éléments non manquants en additionnant le nombre de chaque ligne et colonne obtenu par count() avec sum().
print(df.count().sum())
# 5
Vous pouvez également appeler sum() à partir de l’attribut values (numpy.ndarray) du résultat de notnull() ou notna() (où l’élément non manquant est True).
print(df.notnull().values.sum())
# 5
Vérifiez si pandas.DataFrame contient au moins une valeur manquante
En utilisant le nombre total de valeurs manquantes indiqué ci-dessus, vous pouvez vérifier si pandas.DataFrame contient au moins une valeur manquante.
Si le nombre total de valeurs manquantes n’est pas nul, cela signifie que pandas.DataFrame contient au moins une valeur manquante.
print(df.isnull().values.sum() != 0)
# True
Si le nombre total de valeurs manquantes est égal à l’attribut size (le nombre de tous les éléments), cela signifie que tous les éléments sont des valeurs manquantes.
print(df.size)
# 15
print(df.isnull().values.sum() == df.size)
# False
Pour les pandas.Série
pandas.Series a également des méthodes telles que isnull(), isna(), notnull() et notna(). Il peut être géré de la même manière que les exemples ci-dessus de pandas.DataFrame.
s = df['state']
print(s)
# 0 NY
# 1 NaN
# 2 CA
# Name: state, dtype: object
print(s.isnull())
# 0 False
# 1 True
# 2 False
# Name: state, dtype: bool
print(s.notnull())
# 0 True
# 1 False
# 2 True
# Name: state, dtype: bool
print(s.isnull().any())
# True
print(s.isnull().all())
# False
print(s.isnull().sum())
# 1
print(s.count())
# 2
