Comment utiliser dropna() de Python pandas pour supprimer les valeurs NA d’un DataFrame

Introduction

Dans ce tutoriel, vous apprendrez comment utiliser la fonction dropna() de la DataFrame de pandas.

Les valeurs NA signifient « Non disponible ». Cela peut s’appliquer à Null, None, pandas.NaT ou numpy.nan. En utilisant dropna(), vous pouvez éliminer les lignes et les colonnes contenant ces valeurs. Cela peut être bénéfique pour ne conserver que les données valides.

Par défaut, cette fonction renvoie une nouvelle DataFrame et la DataFrame source reste inchangée.

Ce tutoriel a été vérifié avec Python 3.10.9, pandas 1.5.2 et NumPy 1.24.1.

Syntaxe

La fonction dropna() prend les paramètres suivants :

dropna(self, axis=0, how="any", thresh=None, subset=None, inplace=False)
  • axis : {0 (ou 'index'), 1 (ou 'colonnes')}, valeur par défaut 0
  • Si 0, supprime les lignes contenant des valeurs manquantes.
  • Si 1, supprime les colonnes contenant des valeurs manquantes.
  • how : {'any', 'all'}, valeur par défaut 'any'
  • Si 'any', supprime la ligne ou la colonne si l’une des valeurs est NA.
  • Si 'all', supprime la ligne ou la colonne si toutes les valeurs sont NA.
  • thresh: (optionnel) une valeur int pour spécifier le seuil de l’opération de suppression.
  • subset: (optionnel) étiquette de colonne ou séquence d’étiquettes pour spécifier les lignes ou colonnes.
  • inplace: (optionnel) une valeur bool.
  • Si True, le DataFrame source est modifié et None est renvoyé.

Construction de DataFrames d’exemple

Construire un DataFrame d’exemple contenant des valeurs valides et invalides:

dropnaExample.py
import pandas as pd
import numpy as np

d1 = {
'Name': ['Shark', 'Whale', 'Jellyfish', 'Starfish'],
'ID': [1, 2, 3, 4],
'Population': [100, 200, np.nan, pd.NaT],
'Regions': [1, None, pd.NaT, pd.NaT]
}

df1 = pd.DataFrame(d1)
print(df1)

Ce code affichera le DataFrame:

Output
Name ID Population Regions 0 Shark 1 100 1 1 Whale 2 200 None 2 Jellyfish 3 NaN NaT 3 Starfish 4 NaT NaT

Ensuite, ajoutez un deuxième DataFrame avec des lignes et des colonnes supplémentaires contenant des valeurs NA:

d2 = {
'Name': ['Shark', 'Whale', 'Jellyfish', 'Starfish', pd.NaT],
'ID': [1, 2, 3, 4, pd.NaT],
'Population': [100, 200, np.nan, pd.NaT, pd.NaT],
'Regions': [1, None, pd.NaT, pd.NaT, pd.NaT],
'Endangered': [pd.NaT, pd.NaT, pd.NaT, pd.NaT, pd.NaT]
}

df2 = pd.DataFrame(d2)
print(df2)

Cela produira un nouveau DataFrame:

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT 2 Jellyfish 3 NaN NaT NaT 3 Starfish 4 NaT NaT NaT 4 NaT NaT NaT NaT NaT

Vous utiliserez les DataFrames précédents dans les exemples suivants.

Supprimer toutes les lignes avec des valeurs manquantes

Utilisez dropna() pour supprimer les lignes avec des valeurs None, NaN ou NaT:

dropnaExample.py
dfresult = df1.dropna()
print(dfresult)

Cela produira :

Output
Name ID Population Regions 0 Shark 1 100 1

A new DataFrame with a single row that didn’t contain any NA values.

Suppression de toutes les colonnes avec des valeurs manquantes

Utilisez dropna() avec axis=1 pour supprimer les colonnes avec des valeurs None, NaN, ou NaT :

dfresult = df1.dropna(axis=1)
print(dfresult)

Les colonnes avec des valeurs None, NaN, ou NaT seront supprimées :

Output
Name ID 0 Shark 1 1 Whale 2 2 Jellyfish 3 3 Starfish 4

A new DataFrame with a single column that contained non-NA values.

Suppression des lignes ou des colonnes si toutes les valeurs sont Null avec how

Utilisez le deuxième DataFrame et how :

dropnaExample.py
dfresult = df2.dropna(how='all')
print(dfresult)

Les lignes avec toutes les valeurs égales à NA seront supprimées :

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT 2 Jellyfish 3 NaN NaT NaT 3 Starfish 4 NaT NaT NaT

La cinquième ligne a été supprimée.

Ensuite, utilisez how et spécifiez l’axe :

dropnaExample.py
dfresult = df2.dropna(how='all', axis=1)
print(dfresult)

Les colonnes avec toutes les valeurs égales à NA seront supprimées :

Output
Name ID Population Regions 0 Shark 1 100 1 1 Whale 2 200 None 2 Jellyfish 3 NaN NaT 3 Starfish 4 NaT NaT 4 NaT NaT NaT NaT

La cinquième colonne a été supprimée.

Suppression de lignes ou de colonnes si un seuil est franchi avec thresh

Utilisez le deuxième DataFrame avec thresh pour supprimer les lignes qui ne satisfont pas au seuil d’au moins 3 valeurs non-NA:

dropnaExample.py
dfresult = df2.dropna(thresh=3)
print(dfresult)

Les lignes n’ayant pas au moins 3 valeurs non-NA seront supprimées:

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT

Les troisième, quatrième et cinquième lignes ont été supprimées.

Suppression de lignes ou de colonnes pour des sous-ensembles spécifiques

Utilisez le deuxième DataFrame avec subset pour supprimer les lignes avec des valeurs NA dans la colonne Population:

dropnaExample.py
dfresult = df2.dropna(subset=['Population'])
print(dfresult)

Les lignes ayant des valeurs NA dans la colonne Population seront supprimées:

Output
Name ID Population Regions Endangered 0 Shark 1 100 1 NaT 1 Whale 2 200 None NaT

Les troisième, quatrième et cinquième lignes ont été supprimées.

Vous pouvez également spécifier les valeurs d’index dans le subset lors de la suppression de colonnes du DataFrame:

dropnaExample.py
dfresult = df2.dropna(subset=[1, 2], axis=1)
print(dfresult)

Les colonnes contenant des valeurs NA dans un sous-ensemble de lignes 1 et 2:

Output
Name ID 0 Shark 1 1 Whale 2 2 Jellyfish 3 3 Starfish 4 4 NaT NaT

Les troisième, quatrième et cinquième colonnes ont été supprimées.

Changer le DataFrame source après avoir supprimé des lignes ou des colonnes avec inplace

Par défaut, dropna() ne modifie pas le DataFrame source. Cependant, dans certains cas, vous pouvez souhaiter économiser de la mémoire lors de la manipulation d’un grand DataFrame source en utilisant inplace.

dropnaExample.py
df1.dropna(inplace=True)
print(df1)

Ce code n’utilise pas de variable dfresult.

Cela produira :

Output
Name ID Population Regions 0 Shark 1 100 1

Le DataFrame d’origine a été modifié.

Conclusion

Dans cet article, vous avez utilisé la fonction dropna() pour supprimer les lignes et les colonnes avec des valeurs NA.

Poursuivez votre apprentissage avec plus de tutoriels Python et pandas – Tutoriel sur le module Python pandas, Supprimer les lignes dupliquées pandas.

Références

Source:
https://www.digitalocean.com/community/tutorials/pandas-dropna-drop-null-na-values-from-dataframe