Remplissage des valeurs manquantes après une fusion (fillna())
Après une fusion de DataFrames, il peut y avoir des valeurs manquantes (NaN) si certaines correspondances n’ont pas été trouvées dans l’un des DataFrames. La méthode fillna() permet de remplir ces valeurs manquantes avec une valeur spécifique ou en utilisant une méthode d’interpolation ou de propagation. Vous pouvez spécifier une valeur à utiliser pour remplacer les NaN, par exemple une valeur numérique comme 0, une valeur de texte comme une chaîne vide, ou même utiliser des méthodes comme la propagation des valeurs voisines avec method=’ffill’ (pour remplir avec la valeur précédente) ou method=’bfill’ (pour remplir avec la valeur suivante). Cette opération est particulièrement utile pour s’assurer que le DataFrame final ne contient pas de valeurs manquantes après une fusion, ce qui peut rendre les analyses ou modèles plus robustes.
Fonctions :
-
df.fillna(valeur)
Permet de remplacer les valeurs manquantes (NaN) dans un DataFrame ou une Series par une valeur donnée ou une méthode de remplissage. Après une fusion (merge, join), il est fréquent d’avoir des NaN là où les données ne se recoupent pas : fillna() permet de rendre le jeu de données exploitable.
Importation :
import pandas as pd
Attributs :
Paramètre Type Description Valeur par défaut value
scalar, dict, Series, ou DataFrame Valeur(s) à utiliser pour remplir les NaN
. Peut être une valeur unique ou des valeurs spécifiques par colonne.Obligatoire method
{'ffill', 'bfill'} Méthode de propagation des valeurs : 'ffill'
(remplit avec la valeur précédente),'bfill'
(avec la suivante).None
axis
{0, 1} Applique le remplissage sur les lignes ( 0
) ou colonnes (1
).None
inplace
bool Si True
, modifie le DataFrame directement sans retour de copie.False
limit
int Nombre maximum de remplissages consécutifs à effectuer. None
Exemple de code :
import pandas as pd # Exemple de DataFrame après une fusion df = pd.DataFrame({ 'id': [1, 2, 3, 4], 'nom': ['Alice', 'Bob', 'Charlie', None], 'age': [25, None, 30, None] }) # Remplacer les valeurs manquantes df_rempli = df.fillna({ 'nom': 'Inconnu', 'age': df['age'].mean() }) print(df_rempli)
Explication du code :
- Le DataFrame
df
contient des valeurs manquantes (None
/NaN
) dans les colonnesnom
etage
. df.fillna()
remplit cesNaN
:- La colonne
nom
est remplie par la chaîne'Inconnu'
. - La colonne
age
est remplie avec la moyenne des valeurs connues (df['age'].mean()
).
- La colonne
- Le résultat (
df_rempli
) est un nouveau DataFrame sansNaN
.
➡️ L’original (df
) reste inchangé carinplace=False
par défaut.
🔸 Remarques pratiques
-
Très utile après une fusion (
merge
) ou une jointure externe (how='outer'
) : ces opérations créent souvent desNaN
là où les données n’ont pas de correspondance.
👉 Unfillna()
propre garantit que le DataFrame reste cohérent et exploitable. -
Utiliser
method='ffill'
ou'bfill'
est pratique pour combler des séries temporelles ou des données ordonnées. -
Le dictionnaire passé dans
value
permet un remplissage personnalisé par colonne : pratique pour gérer différemment les colonnes numériques, catégorielles ou textuelles. -
⚠️ Attention :
df.fillna(inplace=True)
modifie directement le DataFrame et ne retourne rien (None
).- Vérifie toujours le type de tes colonnes après remplissage, en particulier si tu remplaces des
NaN
numériques par des chaînes. Tu risques d'avoir une colonne qui devientobject
alors que tu attendais unfloat
.
- Le DataFrame