Pandas : comment utiliser l’équivalent de np.where()



Vous pouvez utiliser la fonction NumPy Where() pour mettre à jour rapidement les valeurs d’un tableau NumPy à l’aide de la logique if-else.

Par exemple, le code suivant montre comment mettre à jour les valeurs d’un tableau NumPy qui remplissent une certaine condition :

import numpy as np

#create NumPy array of values
x = np.array([1, 3, 3, 6, 7, 9])

#update valuesin array based on condition
x = np.where((x < 5) | (x > 8), x/2, x)

#view updated array
x

array([0.5, 1.5, 1.5, 6. , 7. , 4.5])

Si une valeur donnée dans le tableau était inférieure à 5 ou supérieure à 8, nous divisons la valeur par 2.

Sinon , nous avons laissé la valeur inchangée.

Nous pouvons effectuer une opération similaire dans un DataFrame pandas en utilisant la fonction pandaswhere() , mais la syntaxe est légèrement différente.

Voici la syntaxe de base utilisant la fonction NumPywhere() :

x = np.where(condition, value_if_true, value_if_false)

Et voici la syntaxe de base utilisant la fonction pandaswhere() :

df['col'] = (value_if_false).where(condition, value_if_true)

L’exemple suivant montre comment utiliser la fonction pandaswhere() dans la pratique.

Exemple : l’équivalent de np.where() dans Pandas

Supposons que nous ayons le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'A': [18, 22, 19, 14, 14, 11, 20, 28],
                   'B': [5, 7, 7, 9, 12, 9, 9, 4]})

#view DataFrame
print(df)

    A   B
0  18   5
1  22   7
2  19   7
3  14   9
4  14  12
5  11   9
6  20   9
7  28   4

Nous pouvons utiliser la fonction pandaswhere() suivante pour mettre à jour les valeurs de la colonne A en fonction d’une condition spécifique :

#update values in column A based on condition
df['A'] = (df['A'] / 2).where(df['A'] < 20, df['A'] * 2)

#view updated DataFrame
print(df)

      A   B
0   9.0   5
1  44.0   7
2   9.5   7
3   7.0   9
4   7.0  12
5   5.5   9
6  40.0   9
7  56.0   4

Si une valeur donnée dans la colonne A était inférieure à 20, nous multipliions la valeur par 2.

Sinon , nous avons divisé la valeur par 2.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :

Pandas : Comment compter les valeurs dans une colonne avec condition
Pandas : Comment supprimer des lignes dans DataFrame en fonction de la condition
Pandas : comment remplacer les valeurs dans une colonne en fonction de la condition

Ajouter un commentaire

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