Fonction pd.isna() de Pandas
pd.isna()est la fonction de détection des valeurs manquantes la plus couramment utilisée dans Pandas. Elle vérifie si chaque élément est une valeur manquante et renvoie une valeur booléenne (TrueouFalse) structure.
Dans l'analyse de données, le traitement des valeurs manquantes est une première étape très importante.pd.isna()Elle peut vous aider à identifier rapidement les positions manquantes dans les données, fournissant une base pour les opérations ultérieures de remplissage, de suppression ou d'autres traitements.
Syntaxe de base et paramètres
Format de syntaxe
pandas.isna(obj)
Description du paramètre
| Paramètre | Type | Description |
|---|---|---|
| obj | DataFrame, Series, scalaire, list, tuple | L'objet pour lequel les valeurs manquantes doivent être vérifiées ; il peut être de n'importe quel type de données pris en charge. |
Description de la valeur de retour
- Renvoie un objet booléen ayant la même structure que l'entrée :
- Si l'entrée est un DataFrame, renvoie un DataFrame booléen
- Si l'entrée est une Series, renvoie une Series booléenne
- Si l'entrée est une valeur unique, renvoie un scalaire booléen
Exemple
À travers une série d'exemples du simple au complexe, apprenons à maîtriser parfaitementpd.isna()son utilisation.
Exemple 1 : Détection des valeurs manquantes dans une Series
Exemple
import numpy as np
# Créer une Series contenant des valeurs manquantes
s = pd.Series([1, 2, np.nan, 4, None, 6])
# Détecter les valeurs manquantes
result = pd.isna(s)
print("Série d'origine :")
print(s)
print("\n"Résultat de détection :")
print(result)
Sortie :
原始 Series: 0 1.0 1 2.0 2 NaN 3 4.0 4 NaN 5 6.0 dtype: float64 检测结果: 0 False 1 False 2 True 3 False 4 True 5 False dtype: bool
Explication du code :
np.nanetNonesont tous reconnus comme des valeurs manquantes- Dans la Series booléenne renvoyée, les positions des valeurs manquantes sont
True, les positions des valeurs non manquantes sontFalse
Exemple 2 : Détection des valeurs manquantes dans un DataFrame
Exemple
import numpy as np
# Créer un DataFrame contenant des valeurs manquantes
df = pd.DataFrame({
'A': [1, 2, np.nan, 4],
'B': ['a', Aucune, 'c', 'd'],
'C': [pd.NaT, 6, 7, 8] # NaT est une valeur manquante pour le type temporel
})
# Détecter les valeurs manquantes
result = pd.isna(df)
print("DataFrame d'origine :")
print(df)
print("\n"Résultat de détection :")
print(result)
Sortie :
原始 DataFrame:
A B C
0 1.0 a None
1 2.0 None 6
2 NaN c 7
3 4.0 d 8
dtype: object
检测结果:
A B C
0 False False True
1 False True False
2 True False False
3 False False False
Explication du code :
pd.NaT(Not a Time) est une valeur manquante de type temporel, et elle est également correctement identifiée- Chaque position dans le DataFrame renvoie la valeur booléenne correspondante
Exemple 3 : Compter les valeurs manquantes
Dans l'analyse de données réelle, nous avons souvent besoin de savoir combien de valeurs manquantes il y a.
Exemple
import numpy as np
# Créer des données
df = pd.DataFrame({
'A': [1, np.nan, 3, np.nan, 5],
'B': [np.nan, 2, np.nan, 4, np.nan],
'C': [1, 2, 3, 4, 5]
})
# Compter les valeurs manquantes dans chaque colonne
print("Nombre de valeurs manquantes par colonne :")
print(pd.isna(df).sum())
print("\n"Total des valeurs manquantes :", pd.isna(df).sum().sum())
# Calculer la proportion de valeurs manquantes
print("\n"Proportion de valeurs manquantes :")
print((pd.isna(df).sum() / len(df) * 100).round(2), "%")
Sortie :
每列缺失值数量: A 2 B 3 C 0 dtype: int64 总缺失值数量: 5 缺失值比例: A 40.0 B 60.0 C 0.0 %
Exemple 4 : Combinaison avec d'autres fonctions
Exemple
import numpy as np
# Créer des données
df = pd.DataFrame({
'name': ['Alice', 'Bob', None, 'Diana', 'Eve'],
'age': [25, None, 35, 28, None],
'score': [85, 90, 78, 92, 88]
})
# Utiliser isna pour filtrer les lignes contenant des valeurs manquantes
rows_with_na = df[pd.isna(df).any(axis=1)]
print("Lignes contenant des valeurs manquantes :")
print(rows_with_na)
# Utiliser isna pour remplir les valeurs manquantes
df_filled = df.fillna({
'name': 'Unknown',
'age': df['age'].mean(), # Remplir l'âge avec la moyenne
'score': 0
})
print("\n"DataFrame après remplissage:")
print(df_filled)
Sortie :
包含缺失值的行:
name age score
0 Alice 25.0 85
2 None 35.0 78
3 Diana 28.0 92
填充后的 DataFrame:
name age score
0 Alice 25.0 85
1 Bob 29.0 90
2 Unknown 35.0 78
3 Diana 28.0 92
4 Eve 0.0 88
Remarques importantes
Conseils importants:
pd.isna()Les valeurs suivantes seront reconnues comme valeurs manquantes:
np.nan- Valeurs manquantes de type numériqueNone- Objet None natif de Pythonpd.NaT- Valeurs manquantes de type datetime
Pour les chaînes vides""ou0,pd.isna()renverraFalse, car elles ne sont pas des valeurs manquantes.
Autres extensions
Fonctions courantes de Pandas