Fonction pd.notna() de Pandas

Pandas 通用函数Fonctions courantes de Pandas


pd.notna()est une fonction de la bibliothèque Pandas utilisée pourdétecter les valeurs manquantes. Elle vérifie chaque élément de l'objet d'entrée pour déterminer s'il s'agit d'une valeur non manquante, et renvoie un résultat composé de valeurs booléennes (True/False).

C'est l'une des fonctions les plus couramment utilisées dans le nettoyage des données, nous aidant à identifier rapidement les valeurs valides dans les données et à préparer le traitement et l'analyse ultérieurs des données.

Explication du terme: not« not » est une négation,na« na » est l'abréviation de « not available », donc ensemble, cela signifie « pas une valeur manquante ».


Syntaxe de base et paramètres

pd.notna()est une fonction de premier niveau de la bibliothèque Pandas et peut être appelée directement viapd.notna(), ou via la méthode de l'objet Series ou DataFrame.notna()méthode.

Format de syntaxe

pd.notna(obj)

Description du paramètre

  • Paramètre: obj
    • Type : tout objet Python, tel qu'un Series, DataFrame, list, array, valeur scalaire, etc.
    • Description : l'objet à vérifier pour les valeurs non manquantes. Les valeurs manquantes dans Pandas incluentNone、NaN、NaT(type temporel manquant) etpandas.NA。

Description de la fonction

  • Valeur de retour: renvoie un objet booléen de même forme que l'objet d'entrée. S'il s'agit d'une Series ou d'un DataFrame, renvoie un objet du même type ; s'il s'agit d'un scalaire, renvoie une seule valeur booléenne.
  • Effet: renvoie True pour les valeurs non manquantesTrue, et renvoie False pour les valeurs manquantesFalse。

Exemples

Maîtrisons parfaitement l'utilisation de pd.notna()pd.notna()à travers une série d'exemples du simple au complexe.

Exemple 1 : Utilisation de base - Détection des valeurs manquantes dans les scalaires et les listes

Exemple

import pandas as pd
import numpy as np

# 1. Vérifier si les valeurs scalaires sont non manquantes
print("=== Détection des scalaires ===")
print(f"pd.notna(10): {pd.notna(10)}")              # Valeur numérique normale -> True
print(f"pd.notna('example'): {pd.notna('example')}")  # Chaîne normale -> True
print(f"pd.notna(None): {pd.notna(None)}")          # None -> False
print(f"pd.notna(np.nan): {pd.notna(np.nan)}")      # np.nan -> False

# 2. Détecter les valeurs manquantes dans une liste
print("\n=== Détection de liste ===")
data_list = [1, 2, np.nan, 'example', None, 5]
result = pd.notna(data_list)
print(f"Liste originale : {data_list}")
print(f"Résultat de détection : {result.tolist()}")  # Convertir en liste pour faciliter la visualisation

Sortie attendue :

=== 标量检测 ===
pd.notna(10): True
pd.notna('example'): True
pd.notna(None): False
pd.notna(np.nan): False

=== 列表检测 ===
原始列表: [1, 2, nan, 'example', None, 5]
检测结果: [True, False, True, False, True]

Explication du code :

  1. pd.notna(10)etpd.notna('example')Détecte les valeurs numériques normales et les chaînes de caractères, renvoie TrueTrue。
  2. pd.notna(None)etpd.notna(np.nan)Détecte les marqueurs de valeurs manquantes de Python et NumPy, renvoie FalseFalse。
  3. Utilisation de pd.notna() sur une listepd.notna()renvoie une liste booléenne, où les positions des valeurs manquantes sont FalseFalse。

Exemple 2 : Détection des valeurs manquantes dans une Series

Lors du traitement des données Series,pd.notna()pd.notna() peut rapidement localiser les données valides.

Exemple

import pandas as pd
import numpy as np

# Créer une Series contenant des valeurs manquantes
s = pd.Series([1, 2, np.nan, 4, None, 'example', np.nan])

print("=== Série originale ===")
print(s)
print(f"\nType : {type(s)}")

# Utiliser pd.notna() pour détecter
print("\n=== Résultat de détection de pd.notna() ===)
result = pd.notna(s)
print(result)

# Utiliser la méthode notna() de la Series (effet équivalent)
print("\n=== Détection avec la méthode s.notna() ===)
print(s.notna())

# Filtrer les valeurs non manquantes
print("\n=== Filtrer les valeurs non manquantes ===)
print(s[s.notna()])

Sortie attendue :

=== 原始 Series ===
0       1
1       2
2     NaN
3       4
4    None
5    example
6     NaN
dtype: object

=== pd.notna() 检测结果 ===
0     True
1     True
2    False
3     True
4    False
5     True
6    False
dtype: bool

=== s.notna() 方法检测 ===
0     True
1     True
2    False
3     True
4    False
5     True
6    False
dtype: bool

=== 筛选非缺失值 ===
0       1
1       2
3       4
5    example
dtype: object

Explication du code :

  • pd.notna(s)ets.notna()Les deux peuvent détecter les valeurs manquantes dans une Series et renvoyer une Series booléenne.
  • Utilisation de l'indexation booléennes[s.notna()]peut rapidement filtrer tous les éléments non manquants, ce qui est très utile dans le nettoyage des données.

Exemple 3 : Détection des valeurs manquantes dans un DataFrame

Lors du traitement de données tabulaires,pd.notna()pd.notna() peut rapidement révéler la complétude des données.

Exemple

import pandas as pd
import numpy as np

# Créer un DataFrame contenant des valeurs manquantes
df = pd.DataFrame({
    'name': ['Alice', 'Bob', None, 'Diana'],
    'age': [25, np.nan, 30, 28],
    'score': [85, 90, np.nan, 95]
})

print("=== DataFrame d'origine ===")
print(df)

# Détecter l'ensemble du DataFrame
print("\n=== Résultat de détection de pd.notna() ===)
print(pd.notna(df))

# Compter les valeurs manquantes par colonne
print("\n=== Nombre de valeurs non manquantes par colonne ===)
print(df.notna().sum())

# Compter les valeurs manquantes par ligne
print("\n=== Nombre de valeurs non manquantes par ligne ===)
print(df.notna().sum(axis=1))

# Calculer le ratio de valeurs manquantes
print("\n=== Ratio de valeurs manquantes ===)
missing_ratio = df.isna().mean()
print(missing_ratio)

Sortie attendue :

=== 原始 DataFrame ===
    name  age  score
0  Alice   25   85.0
1    Bob  NaN   90.0
2   None   30    NaN
3  Diana   28   95.0

=== pd.notna() 检测结果 ===
   name    age  score
0  True   True   True
1  True  False   True
2 False   True  False
3  True   True   True

=== 每列非缺失值数量 ===
name     3
age      3
score    3

=== 每行非缺失值数量 ===
0    3
1    2
2    1
3    3

=== 缺失值比例 ===
name     0.25
age      0.25
score    0.25

Explication du code :

  • pd.notna(df)Renvoie un DataFrame booléen de même forme que le DataFrame d'origine, où chaque position indique s'il s'agit d'une valeur non manquante.
  • df.notna().sum()Compte le nombre de valeurs non manquantes dans chaque colonne.
  • df.isna().mean()Calcule la proportion de valeurs manquantes dans chaque colonne pour aider à évaluer la qualité des données.

Astuce : pd.notna()etpd.isna()sont opposés l'un à l'autre.pd.notna()Là où pd.notna() renvoie True,pd.isna()pd.isna() renvoie False, et inversement.

Pandas 常用函数Fonctions courantes de Pandas

Autres extensions