Accéder à un niveau spécifique d'un MultiIndex avec xs

La méthode xs() permet d’accéder à un niveau spécifique d’un MultiIndex dans un DataFrame. Elle permet de sélectionner une sous-table à partir d’un ou plusieurs niveaux d’index, en spécifiant une valeur particulière pour un ou plusieurs niveaux. Cela est utile lorsque vous souhaitez extraire un sous-ensemble de données en fonction d’un niveau d’index précis.

Fonctions :

  • df.xs()

    La méthode xs() permet d'accéder à un niveau spécifique d'un MultiIndex. Elle permet de sélectionner une valeur particulière dans un ou plusieurs niveaux d'index et de renvoyer un sous-ensemble du DataFrame correspondant à cette valeur. Cette méthode est particulièrement utile pour travailler avec des données hiérarchiques où vous avez plusieurs niveaux d'index. Avec xs(), vous pouvez filtrer un DataFrame par un niveau d'index particulier sans avoir besoin de manipuler toute la structure du MultiIndex. Elle est généralement utilisée pour extraire une portion de données à partir d'un ou plusieurs niveaux d'index.

    Importation :

    import pandas as pd

    Attributs :

    Paramètre Type Description Valeur par défaut
    key str, list, ou array La valeur du niveau d'index auquel vous souhaitez accéder. Par exemple, une étiquette de niveau d'index ou une liste de valeurs. None
    level str ou int Le niveau de l'index sur lequel vous souhaitez effectuer la recherche. Ce paramètre peut être un nom de niveau ou un index de niveau. None
    axis int, optionnel L'axe sur lequel opérer, soit 0 pour les lignes (par défaut) ou 1 pour les colonnes. 0
    drop_level bool, optionnel Si True, le niveau sélectionné est supprimé de l'index, transformant le résultat en un DataFrame avec un index plus simple. Par défaut, il est False. False

    Exemple de code :

    import pandas as pd
    
    # Création d'un DataFrame avec un MultiIndex
    index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1), ('B', 2)], names=['lettre', 'num'])
    df = pd.DataFrame({
        'valeur': [10, 20, 30, 40]
    }, index=index)
    
    # Accéder aux lignes où 'lettre' est égal à 'A'
    df_xs = df.xs('A', level='lettre')
    
    # Afficher le résultat
    print(df_xs)
    Résultat du code

    Explication du code :

    import pandas as pd importe la bibliothèque pandas, renommée ici en pd pour simplifier son utilisation dans le code.

    Création d'un DataFrame avec un MultiIndex

    Le code crée un DataFrame nommé df avec une colonne 'valeur' contenant les données [10, 20, 30, 40]. L'index du DataFrame est un MultiIndex, créé à partir de tuples via pd.MultiIndex.from_tuples(). Ces tuples sont définis comme [('A', 1), ('A', 2), ('B', 1), ('B', 2)] et les noms des niveaux de l'index sont spécifiés par names=['lettre', 'num'].

    Accéder aux lignes où 'lettre' est égal à 'A'

    La méthode xs() permet d'extraire les lignes correspondant à une valeur particulière dans un niveau de l'index. Dans ce cas, xs('A', level='lettre') sélectionne toutes les lignes où le niveau 'lettre' est égal à 'A'.

    df_xs = df.xs('A', level='lettre') crée un nouveau DataFrame, df_xs, qui contient uniquement les lignes où le niveau 'lettre' est égal à 'A'.

    Afficher le résultat

    La fonction print() affiche le contenu de df_xs, montrant les lignes filtrées du DataFrame d'origine correspondant à 'lettre' == 'A'.