# 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](https://www.ionos.com/fr-be/digitalguide/sites-internet/developpement-web/python-pandas-dataframe/) en se basant sur une condition spécifique.

## Syntaxe de Pandas `DataFrame.where()`

La fonction `where()` accepte **jusqu’à cinq paramètres** et suit la syntaxe de base montrée ci-dessous :

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

Dans 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 :

<table>
  <thead>
    <tr>
      <th><strong>Paramètres</strong></th>
      <th><strong>Description</strong></th>
      <th><strong>Valeur par défaut</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`cond`</td>
      <td>Condition qui doit être remplie pour que les valeurs soient conservées dans le DataFrame</td>
      <td>Obligatoire</td>
    </tr>
    <tr>
      <td>`other`</td>
      <td>Valeur de remplacement pour les valeurs ne remplissant pas la condition</td>
      <td>`NaN`</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Si `True`, l’opération est effectuée directement sur le DataFrame existant</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`axis`</td>
      <td>Indique si l’opération doit être appliquée sur les lignes (`0`) ou les colonnes (`1`)</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Indique à quel niveau du multi-index la condition doit être appliquée</td>
      <td>`None`</td>
    </tr>
  </tbody>
</table>

## 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éé :

```python
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)
```

Le code ci-dessus renvoie le DataFrame suivant :

```none
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.

```python
# 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)
```

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é :

```none
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 :

```python
# 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)
```

Dans 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` :

```none
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.


This is a markdown version of: [https://www.ionos.com/fr-be/digitalguide/sites-internet/developpement-web/python-pandas-dataframe-where/](https://www.ionos.com/fr-be/digitalguide/sites-internet/developpement-web/python-pandas-dataframe-where/) for AI/LLM consumption.