Propager les valeurs pour remplir les NaN
Lorsque des valeurs manquantes (NaN
) apparaissent dans un jeu de données, il peut être pertinent de les remplir en propageant des valeurs connues voisines. Cette technique, appelée propagation, consiste à utiliser la dernière valeur valide (ou la prochaine) pour remplir les cases vides, selon une logique temporelle ou structurelle.
La propagation est très utile dans les séries temporelles ou les tableaux ordonnés, où les valeurs changent progressivement et peuvent raisonnablement être imputées par celles qui les précèdent ou les suivent. Par exemple, si une mesure de température manque à une date donnée, il peut être pertinent d’utiliser la dernière valeur enregistrée.
En Python, la bibliothèque pandas
fournit des méthodes simples comme fillna(method='ffill')
pour propager les valeurs vers l’avant (forward fill) et fillna(method='bfill')
pour propager vers l’arrière (backward fill).
Dans cette page, vous apprendrez comment utiliser efficacement la propagation pour combler les NaN
, quand l’appliquer, et quelles précautions prendre pour éviter d’introduire des biais ou des erreurs d’interprétation.
Fonctions :
-
fillna()
La fonction fillna() permet de remplacer les valeurs manquantes (NaN) dans un DataFrame par une valeur spécifique, une méthode de remplissage (comme la méthode de propagation), ou même une valeur calculée à partir des autres éléments du DataFrame. Elle est utilisée pour compléter les données manquantes.
Importation :
import pandas as pd
Attributs :
Paramètre Type Description Valeur par défaut value
scalar, dict, Series, ou DataFrame Valeur(s) de remplacement pour les valeurs manquantes. Peut être une valeur unique ou un dictionnaire pour remplacer des colonnes spécifiques. None
method
str, optionnel Méthode de propagation des valeurs manquantes. Peut être 'ffill'
(propagation vers l'avant) ou'bfill'
(propagation vers l'arrière).None
axis
int, optionnel Spécifie si le remplacement doit se faire sur les lignes ( axis=0
) ou les colonnes (axis=1
).None
inplace
bool Si True
, modifie le DataFrame en place. SiFalse
, renvoie un nouveau DataFrame.False
limit
int, optionnel Limite le nombre de valeurs manquantes à remplacer. None
Exemple de code :
import pandas as pd # Création d'un DataFrame exemple avec des valeurs manquantes data = { 'Nom': ['Alice', 'Bob', 'Charlie', None, 'Eva'], 'Âge': [24, None, 35, 40, None], 'Ville': ['Paris', 'Lyon', None, 'Nice', 'Bordeaux'] } df = pd.DataFrame(data) # Remplacer les valeurs manquantes par une valeur spécifique (ici, 'Inconnu' pour les noms et 'Inconnu' pour les villes) df_filled = df.fillna(value={'Nom': 'Inconnu', 'Ville': 'Inconnu'}) # Afficher le DataFrame après remplacement print(df_filled)
Explication du code :
import pandas as pd
importe la bibliothèque pandas, renommée ici enpd
, ce qui facilite son utilisation dans le reste du code.Création d’un DataFrame avec des valeurs manquantes
On crée un dictionnaire nommédata
contenant trois colonnes :Nom
,Âge
etVille
, dont certaines cellules contiennent la valeurNone
, représentant des valeurs manquantes.df = pd.DataFrame(data)
transforme ce dictionnaire en un DataFrame nommédf
.Remplacer les valeurs manquantes
La méthodefillna()
est utilisée pour remplacer les valeurs manquantes (NaN) dans le DataFrame. Le paramètrevalue
permet de spécifier un dictionnaire associant chaque colonne à une valeur de remplacement. Ici, les valeurs manquantes dans la colonneNom
etVille
sont remplacées par'Inconnu'
.df_filled = df.fillna(value={'Nom': 'Inconnu', 'Ville': 'Inconnu'})
crée donc un nouveau DataFramedf_filled
avec les valeurs manquantes de ces deux colonnes remplacées.Afficher le DataFrame résultant
La fonctionprint(df_filled)
affiche le contenu du DataFrame après traitement, permettant de vérifier que les remplacements ont bien été effectués.