Pandas DataFrame.where() : vérifier des conditions au sein d’un DataFrame
La fonction Python Pandas DataFrame.where()
sert à effectuer des manipulations de données conditionnelles dans des DataFrames. Elle permet aux programmeurs de remplacer ou de masquer des valeurs dans un Pandas DataFrame en se basant sur une condition spécifique.
- Certificat SSL et protection DDoS
- Sauvegarde et restauration des données
- Assistance 24/7 et conseiller personnel
Syntaxe de Pandas DataFrame.where()
La fonction where()
accepte jusqu’à cinq paramètres et suit la syntaxe de base montrée ci-dessous :
DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None)
pythonDans ce cas, la fonction est appliquée à un DataFrame et seules les valeurs qui remplissent la condition spécifiée (cond
) restent inchangées. Toutes les autres valeurs sont remplacées par les valeurs spécifiées dans other
.
Paramètres pertinents
Pandas DataFrame.where()
accepte différents paramètres qui permettent une adaptation flexible de la manipulation des données :
Paramètres | Description | Valeur par défaut |
---|---|---|
cond
|
Condition qui doit être remplie pour que les valeurs soient conservées dans le DataFrame | Obligatoire |
other
|
Valeur de remplacement pour les valeurs ne remplissant pas la condition | NaN
|
inplace
|
Si True , l’opération est effectuée directement 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
|
Application de Pandas DataFrame.where()
La fonction where()
peut être utilisée dans de nombreuses situations où des manipulations de données conditionnelles sont nécessaires. Il s’agit par exemple du nettoyage de données ou de la création de nouvelles colonnes basées sur des conditions.
Remplacement conditionnel de valeurs
Supposons que vous ayez un DataFrame contenant les résultats de vente d’une entreprise et que vous souhaitiez afficher uniquement 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)
pythonLe 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 maintenant remplacer toutes les valeurs négatives par 0
. Pour cela, vous devez vous assurer que seules les colonnes contenant des valeurs numériques sont prises en compte, sinon la comparaison ne fonctionnera 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)
pythonLe 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 conditionnel 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 supérieures à un certain seuil (dans ce cas, 10000
). Ici encore, vous devez vous assurer que seules les colonnes numé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)
pythonDans ce cas, le DataFrame résultant df_masked
n’affiche que les valeurs supé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, transformer et nettoyer efficacement des données dans un DataFrame, tout en préservant sa structure originale.