La fonction Python Pandas DataFrame.fillna() est utilisée pour remplacer les valeurs man­quantes dans un DataFrame. Cela est utile dans de nombreux cas pour faciliter les processus de nettoyage de données ou pour effectuer des analyses.

De­fi­ni­tion

Une valeur NaN (« Not a Number ») re­pré­sente une donnée manquante ou indéfinie dans un DataFrame Pandas. Elle survient lorsque des données sont absentes ou qu’une opération ne peut pas produire un résultat valide. Pandas utilise NaN pour indiquer ces absences, per­met­tant ainsi de les gérer ef­fi­ca­ce­ment avec des fonctions comme fillna().

Pandas fillna() : comment se présente la syntaxe de la méthode ?

La fonction fillna() prend jusqu’à cinq pa­ra­mètres et est syn­taxi­que­ment struc­tu­rée comme suit :

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)
python

Quels sont les pa­ra­mètres per­ti­nents ?

Le com­por­te­ment de DataFrame.fillna() de Pandas peut être adapté à l’aide de dif­fé­rents pa­ra­mètres :

Pa­ra­mètres Des­crip­tion Valeur par défaut
value Une valeur mise à l’échelle ou un dic­tion­naire Python ou une série pour remplacer les NaNs None
method Indique la méthode de rem­plis­sage ; rem­plis­sage avant (ffill) ou rem­plis­sage arrière (bfill) None
axis Détermine l’axe le long duquel l’opération est effectuée (0 ou index pour les lignes, 1 ou columns pour les colonnes) 0
inplace Si True, les mo­di­fi­ca­tions sont ef­fec­tuées di­rec­te­ment dans le DataFrame d’origine False
limit Entier limitant le nombre de valeurs NaN à remplacer None
Note

Dans les versions futures, le paramètre methodne sera pro­ba­ble­ment plus supporté. Les pro­gram­meurs pourront alors avoir recours à obj.ffill() ou obj.bfill(). Ces deux fonctions ont le même effet que le paramètre method cor­res­pon­dant.

Dans quels cas applique-t-on la méthode DataFrame.fillna() de Pandas ?

La fonction Pandas fillna() peut être utilisée de dif­fé­rentes manières :

Remplacer des valeurs NaN par une valeur fixe

Dans un premier temps, on définit un DataFrame :

import pandas as pd
# Exemple de DataFrame avec différentes valeurs
data = {
    'A' : [1, 2, None, 4],
    'B' : [None, 2, 3, 4],
    'C' : [1, None, 3, 4]
}
df = pd.DataFrame(data)
print(df)
python

Le DataFrame que nous venons de définir se présente comme suit :

A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  NaN
2  NaN  3.0  3.0
3  4.0  4.0  4.0
Note

Notez que dans Python Pandas, la valeur None est in­ter­pré­tée comme NaN dans les Da­ta­Frames et Series, notamment pour les colonnes de types nu­mé­riques ou flottants.

Pour remplacer main­te­nant les valeurs man­quantes par la valeur 0, on peut utiliser la fonction Pandas fillna() :

# Remplacer les valeurs manquantes par la valeur 0
df_filled = df.fillna(0)
print(df_filled)
python

Au final, chaque NaN a été remplacé par la valeur 0 passée à la fonction :

A    B    C
0  1.0  0.0  1.0
1  2.0  2.0  0.0
2  0.0  3.0  3.0
3  4.0  4.0  4.0

Uti­li­sa­tion de la méthode de rem­plis­sage vers l’avant ffill

Si les valeurs NaN doivent être remplies avec les valeurs pré­cé­dentes de chaque colonne, on peut utiliser la méthode ffill qui est passée en paramètre à la fonction :

# Remplacement de toutes les valeurs NaN par la valeur précédente
df_ffill = df.fillna(method='ffill')
print(df_ffill)
python

Dans cet exemple, les valeurs NaN des colonnes A et C ont été rem­pla­cées par les valeurs pré­cé­dentes de la même colonne. Comme il n’y avait pas de valeur pré­cé­dente dans la colonne B, la valeur NaN y est restée :

A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  1.0
2  2.0  3.0  3.0
3  4.0  4.0  4.0

Uti­li­sa­tion ligne par ligne de la méthode de rem­plis­sage arrière bfill

Les valeurs NaN peuvent également être rem­pla­cées par les valeurs suivantes de la même ligne. Pour cela, il ne suffit pas d’utiliser la méthode bfill, il est également né­ces­saire de définir le paramètre axis à 1 :

df_bfill = df.fillna(method='bfill', axis=1)
print(df_bfill)
python

Les valeurs NaN de la première et de la troisième ligne ont été rem­pla­cées par leurs suc­ces­seurs res­pec­tifs. Il ne reste une valeur NaN que dans la première colonne, car aucune valeur suivante n’est dis­po­nible dans cette ligne.

A    B    C
0  1.0  1.0  1.0
1  2.0  2.0  NaN
2  3.0  3.0  3.0
3  4.0  4.0  4.0
Aller au menu principal