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) ou1
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 estFalse
.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 :
import pandas as pd
importe la bibliothèque pandas, renommée ici enpd
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 viapd.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 parnames=['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 dedf_xs
, montrant les lignes filtrées du DataFrame d'origine correspondant à'lettre' == 'A'
.