Créer une colonne conditionnelle avec np.where()

La fonction np.where() de NumPy permet de créer des colonnes conditionnelles dans un DataFrame, en appliquant une condition et en attribuant des valeurs spécifiques en fonction de cette condition. Elle fonctionne comme un opérateur ternaire, où vous pouvez spécifier une condition, une valeur si la condition est vraie et une autre valeur si la condition est fausse.

Fonctions :

  • np.where()

    La fonction np.where() de NumPy permet de créer une nouvelle colonne conditionnelle dans un DataFrame en fonction d'une condition logique. Elle évalue une condition sur chaque ligne et assigne une valeur si la condition est vraie, et une autre valeur si elle est fausse. Cette méthode est très utile pour effectuer des affectations conditionnelles de manière vectorisée, c'est-à-dire de manière rapide et efficace sans boucle explicite.

    Importation :

    import numpy as np
    import pandas as pd

    Attributs :

    Paramètre Type Description Valeur par défaut
    condition bool La condition logique à évaluer. None
    valeur_si_vrai any La valeur assignée si la condition est vraie. None
    valeur_si_faux any La valeur assignée si la condition est fausse. None

    Exemple de code :

    import pandas as pd
    import numpy as np
    
    # Exemple de DataFrame
    data = {
        'produit': ['A', 'B', 'C', 'D'],
        'prix': [10, 20, 30, 40]
    }
    df = pd.DataFrame(data)
    
    # Créer une colonne 'statut' conditionnelle : 'Bon' si prix <= 25, sinon 'Haut'
    df['statut'] = np.where(df['prix'] <= 25, 'Bon', 'Haut')
    
    print(df)

    Explication du code :

    • DataFrame : Le DataFrame contient des informations sur les produits et leurs prix.
    • Création de la colonne conditionnelle : np.where(df['prix'] <= 25, 'Bon', 'Haut') vérifie pour chaque ligne si le prix est inférieur ou égal à 25. Si la condition est vraie, la colonne 'statut' reçoit la valeur 'Bon', sinon elle reçoit la valeur 'Haut'.

    Remarque :

    • Conditions multiples : Vous pouvez utiliser des expressions logiques combinées dans la condition, comme df['prix'] > 10 & df['prix'] < 30 pour des cas plus complexes.
    • Efficacité : np.where() est très performant pour appliquer des conditions sur de grandes quantités de données, car il effectue la comparaison de manière vectorisée.