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)

    Explication du code :

    1. Accéder à un niveau d'un MultiIndex :
      La méthode xs() permet d'accéder à une valeur spécifique d'un ou plusieurs niveaux d'un MultiIndex. Vous indiquez la valeur de l'index (par exemple 'A') et le nom du niveau ('lettre') pour obtenir toutes les lignes où le niveau 'lettre' a la valeur 'A'.

    2. Retour d'un DataFrame filtré :
      L'appel à df.xs('A', level='lettre') retournera un DataFrame qui contient uniquement les lignes où la valeur de l'index lettre est égale à 'A'.

    3. Option drop_level=True :
      Lorsque vous utilisez drop_level=True, vous obtenez un DataFrame où le niveau d'index sur lequel vous avez filtré est supprimé, ce qui simplifie l'index du DataFrame résultant.

     

    🔹 Remarques pratiques

    • Filtrer par plusieurs niveaux :
      La méthode xs() peut être utilisée pour accéder à un sous-ensemble basé sur plusieurs niveaux d'un MultiIndex. Par exemple, vous pouvez filtrer les données sur les niveaux 'lettre' et 'num'.

    • drop_level=True :
      Si vous souhaitez simplifier l'index du DataFrame retourné, vous pouvez utiliser drop_level=True, ce qui supprimera le niveau d'index sur lequel vous avez effectué la recherche.

    • Travailler avec l'axe des colonnes :
      Vous pouvez également utiliser xs() pour accéder à un niveau spécifique des colonnes dans un DataFrame.