Data Wrangling

Remplacement efficace des valeurs NaN par des zéros dans les DataFrames Pandas

Spread the love

Les données manquantes, souvent représentées par des valeurs NaN (Not a Number), constituent un problème courant en analyse de données. Pandas, une puissante bibliothèque Python pour la manipulation de données, fournit des méthodes efficaces pour gérer ces valeurs manquantes. Cet article montre comment remplacer toutes les valeurs NaN d’une colonne spécifique ou de l’ensemble du DataFrame Pandas par des zéros, en se concentrant sur les approches les plus efficaces.

Table des matières

Méthode fillna() pour le remplacement ciblé des NaN

La méthode fillna() est l’approche recommandée pour remplacer les valeurs NaN par des zéros dans des colonnes spécifiques. Elle est efficace et traite directement les données manquantes.

Illustrons avec un DataFrame exemple :


import pandas as pd
import numpy as np

data = {'A': [1, 2, np.nan, 4, 5], 
        'B': [6, np.nan, 8, 9, 10],
        'C': [11, 12, 13, 14, 15]}
df = pd.DataFrame(data)
print("DataFrame original :n", df)

Cela produit :


DataFrame original :
     A     B   C
0  1.0   6.0  11
1  2.0   NaN  12
2  NaN   8.0  13
3  4.0   9.0  14
4  5.0  10.0  15

Pour remplacer les valeurs NaN de la colonne ‘A’ par des zéros :


df['A'] = df['A'].fillna(0)
print("nDataFrame après remplissage des NaN de la colonne 'A' par 0 :n", df)

Ce qui donne :


DataFrame après remplissage des NaN de la colonne 'A' par 0 :
     A     B   C
0  1.0   6.0  11
1  2.0   NaN  12
2  0.0   8.0  13
3  4.0   9.0  14
4  5.0  10.0  15

Remplacer les NaN dans plusieurs colonnes est tout aussi simple :


df[['A', 'B']] = df[['A', 'B']].fillna(0)
print("nDataFrame après remplissage des NaN des colonnes 'A' et 'B' par 0 :n", df)

Méthode replace() pour la substitution générale de valeurs

La méthode replace() offre une approche plus générale, adaptée au remplacement de diverses valeurs, y compris NaN. Cependant, pour le simple remplacement de NaN par des zéros, fillna() est généralement préférée pour son efficacité et sa clarté.

Pour remplacer toutes les valeurs NaN du DataFrame par 0 en utilisant replace() :


df = df.replace(np.nan, 0)
print("nDataFrame après remplacement de tous les NaN par 0 en utilisant replace() :n", df)

Cela remplace toutes les valeurs NaN du DataFrame. replace() est particulièrement utile pour gérer des scénarios plus complexes, tels que le remplacement simultané de plusieurs valeurs :


df = df.replace({np.nan: 0, -999: 0})  # Exemple ; suppose que -999 existe dans le DataFrame
print("nDataFrame après remplacement de NaN et -999 par 0 :n", df)

En résumé, bien que les deux méthodes atteignent l’objectif, fillna() est plus efficace et lisible pour le remplacement ciblé de NaN dans des colonnes spécifiques, tandis que replace() offre une plus grande flexibilité pour des substitutions de valeurs plus larges. Choisissez la méthode la mieux adaptée à votre tâche spécifique de manipulation de données.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *