Fonction pd.notna() 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 incluent
None、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 manquantes
True, 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 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 :
pd.notna(10)etpd.notna('example')Détecte les valeurs numériques normales et les chaînes de caractères, renvoie TrueTrue。pd.notna(None)etpd.notna(np.nan)Détecte les marqueurs de valeurs manquantes de Python et NumPy, renvoie FalseFalse。- Utilisation de pd.notna() sur une liste
pd.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 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éenne
s[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 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.
Autres extensionsAstuce :
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.
Fonctions courantes de Pandas