La fonction Python Pandas DataFrame.where() sert à effectuer des ma­ni­pu­la­tions de données con­di­tion­nelles dans des Da­ta­Frames. Elle permet aux pro­gram­meurs de remplacer ou de masquer des valeurs dans un Pandas DataFrame en se basant sur une condition spé­ci­fique.

Syntaxe de Pandas DataFrame.where()

La fonction where() accepte jusqu’à cinq pa­ra­mètres et suit la syntaxe de base montrée ci-dessous :

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)
python

Dans ce cas, la fonction est appliquée à un DataFrame et seules les valeurs qui rem­plis­sent la condition spécifiée (cond) restent in­chan­gées. Toutes les autres valeurs sont rem­pla­cées par les valeurs spé­ci­fiées dans other.

Pa­ra­mètres per­ti­nents

Pandas DataFrame.where() accepte dif­fé­rents pa­ra­mètres qui per­met­tent une adap­ta­tion flexible de la ma­ni­pu­la­tion des données :

Pa­ra­mètres Des­crip­tion Valeur par défaut
cond Condition qui doit être remplie pour que les valeurs soient con­ser­vées dans le DataFrame Obli­ga­toire
other Valeur de rem­pla­ce­ment pour les valeurs ne rem­plis­sant pas la condition NaN
inplace Si True, l’opération est effectuée di­rec­te­ment sur le DataFrame existant False
axis Indique si l’opération doit être appliquée sur les lignes (0) ou les colonnes (1) None
level Indique à quel niveau du multi-index la condition doit être appliquée None

Ap­pli­ca­tion de Pandas DataFrame.where()

La fonction where() peut être utilisée dans de nom­breuses si­tua­tions où des ma­ni­pu­la­tions de données con­di­tion­nelles sont né­ces­saires. Il s’agit par exemple du nettoyage de données ou de la création de nouvelles colonnes basées sur des con­di­tions.

Rem­pla­ce­ment con­di­tion­nel de valeurs

Supposons que vous ayez un DataFrame contenant les résultats de vente d’une en­tre­prise et que vous sou­hai­tiez afficher uni­que­ment les résultats positifs. Tous les résultats négatifs doivent être remplacés par 0. Cela peut être fait avec Pandas DataFrame.where(). Tout d’abord, un DataFrame est créé :

import pandas as pd
# Création d’un DataFrame d’exemple
data = {
    'Région': ['Nord', 'Sud', 'Est', 'Ouest'],
    'Ventes_Q1': [15000, -5000, 3000, -1000],
    'Ventes_Q2': [20000, 25000, -7000, 5000]
}
df = pd.DataFrame(data)
print(df)
python

Le code ci-dessus renvoie le DataFrame suivant :

Région    Ventes_Q1    Ventes_Q2
0    Nord         15000         20000
1    Sud          -5000         25000
2    Est            3000         -7000
3    Ouest        -1000          5000

En appelant where(), vous pouvez main­te­nant remplacer toutes les valeurs négatives par 0. Pour cela, vous devez vous assurer que seules les colonnes contenant des valeurs nu­mé­riques sont prises en compte, sinon la com­pa­rai­son ne fonc­tion­nera pas.

# Remplacement conditionnel de valeurs
df_positive = df.copy()
df_positive[['Ventes_Q1', 'Ventes_Q2']] = df[['Ventes_Q1', 'Ventes_Q2']].where(df[['Ventes_Q1', 'Ventes_Q2']] > 0, 0)
print(df_positive)
python

Le DataFrame résultant df_positive ne contient plus que les résultats positifs des ventes et remplace toutes les valeurs négatives par 0 comme souhaité :

Région    Ventes_Q1    Ventes_Q2
0    Nord         15000         20000
1    Sud              0          25000
2    Est          3000                0
3    Ouest          0            5000

Masquage con­di­tion­nel de valeurs

Pandas DataFrame.where() peut également être utilisé pour masquer des valeurs, c’est-à-dire ne rendre visibles que certaines parties d’un DataFrame. Dans ce qui suit, le DataFrame ne doit afficher que les valeurs su­pé­rieures à un certain seuil (dans ce cas, 10000). Ici encore, vous devez vous assurer que seules les colonnes nu­mé­riques sont prises en compte :

# N’afficher que les valeurs supérieures à 10 000
df_masked = df.copy()
df_masked[['Ventes_Q1', 'Ventes_Q2']] = df[['Ventes_Q1', 'Ventes_Q2']].where(df[['Ventes_Q1', 'Ventes_Q2']] > 10000)
print(df_masked)
python

Dans ce cas, le DataFrame résultant df_masked n’affiche que les valeurs su­pé­rieures à 10000. Toutes les autres valeurs sont affichées comme NaN :

Région    Ventes_Q1    Ventes_Q2
0    Nord         15000.0     20000.0
1    Sud              NaN      25000.0
2    Est              NaN            NaN
3    Ouest          NaN            NaN

La fonction where() de Pandas est donc un outil puissant pour filtrer, trans­for­mer et nettoyer ef­fi­ca­ce­ment des données dans un DataFrame, tout en pré­ser­vant sa structure originale.

Aller au menu principal