Comment le multiindex peut être aplati en pandas
Les fonctions comme reset_index et to_records () peuvent être utilisées pour aplatir le multiindex. Nous allons vous apprendre à aplatir le multiindex dans les exemples suivants.
Exemple 1: aplatir le multiindex de tous les niveaux à l'aide de la fonction reset_index ()
À l'aide de la fonction reset_index (), nous allons aplatir toutes les couches du dataframe dans cet exemple. La liste des tuples est convertie en multiindex à l'aide de la méthode from_tuples (). Nous pouvons créer un multiindex de diverses manières, et c'est le plus courant.
Tout d'abord, nous créons notre «mi» multiindex en passant les multiples tuples - («anglais», «1201», 800), («maths», «1202», 900), («bio», «1203», 1050) , («Physique», «1204», 1050), et («chimie», «1205», 1100) à l'intérieur du PD.Multiindex.From_tuples () Fonction. Les noms de colonne des tuples sont spécifiés comme «sujet», «sujet_id» et «frais». Après avoir créé le «MI» multiindex, nous créons également un Pandas DataFrame à l'aide du PD.Fonction DataFrame (). Nous passons un dictionnaire avec les noms des étudiants comme des clés et les marques des étudiants comme des valeurs à l'intérieur de nos données «DF».
Nous avons 3 colonnes - «Mike», «Jack» et «Eva» - ayant les valeurs de données (49, 43, 39, 41, 37), (36, 35, 41, 36, 42) et (46, 44, 39, 46, 48), respectivement. Vous remarquerez peut-être qu'en spécifiant le «mi» multi-index comme paramètre «index» à l'intérieur du PD.Fonction DataFrame (), les colonnes des tuples agissent comme des index à plusieurs niveaux. Maintenant, nous utilisons la fonction reset_index () pour modifier les multiples index en colonnes de données de données. L'index à plusieurs niveaux peut être ajouté en tant que nouvelle colonne DataFrame à l'aide du reset_index (). L'argument Drop peut être utilisé dans la fonction reset_index () si nous ne voulons pas modifier l'index en tant que colonne. Au lieu de faire une nouvelle copie, nous pouvons réinitialiser l'index de DataFrame actuel en utilisant l'argument en place.
On peut remarquer que les trois niveaux d'index sont transformés en colonne de notre dataframe «DF». L'indice est également réinitialisé avec l'index entier par défaut Pandas.
Exemple 2: aplatir les niveaux multi-index spécifiques à l'aide de la fonction reset_index ()
L'approche pour aplatir tous les niveaux de multiindex dans des colonnes du dataframe a été démontrée dans l'exemple précédent. Maintenant, nous apprendrons à aplatir les niveaux spécifiques de l'index dans les colonnes du DataFrame à l'aide de la fonction reset_index (). Un dataframe peut être créé de diverses manières avec Pandas Multiindex. Nous avons déjà vu celui qui utilise la méthode From Tuples. Créons un multiindex à l'aide de la fonction from_array ().
Nous passons trois tableaux et spécifions leurs noms comme «L1» avec les valeurs d'index numériques (11, 22, 33, 44, 55). Nous spécifions «L2» avec des valeurs de chaîne («i», «ii», «iii», «iv», «v») et «l3» avec des valeurs d'index entier (1, 2, 3, 4, 5). Maintenant, nous utilisons ce «mi» multiindex à l'intérieur du PD.Fonction DataFrame () pour créer un multiindex DataFrame.
Pour créer notre DataFrame, nous créons d'abord un dictionnaire Python «données» avec paire de valeurs clés. Ensuite, le dictionnaire «données» est transmis à l'intérieur du PD.DataFrame () fonctionne comme une entrée. Le paramètre «colonnes» est spécifié comme [«département», «dépense»] pour modifier les clés et les valeurs du dictionnaire en étiquettes et données de colonne du pandas dataframe. L'indice de paramètre est spécifié comme «MI» pour définir les niveaux multi-index dans le dataframe «df». Maintenant, nous utilisons la fonction reset_index () pour aplatir un ou plusieurs niveaux du multiindex en colonnes.
Syntaxe pour aplatir le niveau spécifique à l'aide de reset_index ():
trame de données.reset_index (inplace = true, niveau = ['nom du niveau'])Le nom du niveau de l'index que nous voulons aplatir est spécifié dans le paramètre «niveau».
Supposons que nous devions aplatir l'indice «L1» dans la colonne du dataframe.
On peut remarquer qu'en spécifiant le paramètre «Niveau» comme «L1» à l'intérieur de la fonction reset_index (), l'index «L1» est aplati avec une colonne avec succès à une colonne. En utilisant la liste des niveaux d'index dans le «niveau» du paramètre, nous pouvons aplatir les index multiples des colonnes de dataframe. Utilisons une liste des index «L2» et «L3» dans le paramètre «Niveau» à l'intérieur de la fonction reset_index ().
Comme on peut le voir, en spécifiant le «niveau» du paramètre comme liste des niveaux d'index, i.e. ['L2', 'L3'], le niveau des index «L2» et «L3» sont désormais également convertis en colonnes.
Exemple 3: aplatir les niveaux multi-index à l'aide de la fonction to_records ()
Dans cet exemple, nous allons aplatir les niveaux d'index de DataFrame à l'aide de la fonction to_records (). Pour transformer les tuples en multiindex, nous utiliserons une fois de plus la fonction form_tuples (). Nous importons d'abord les modules Pandas, puis nous créons le multiindex et DataFrame.
Le «mi» multiindex est créé en utilisant les multiples tuples, i.e. ('1001', 'C11', 80), ('1002', 'C12', 75), ('1003', 'C13', 90), ('1004', 'C14', 95), et ( «1005», «C15», 70). Les noms des niveaux d'index dans le multiindex sont spécifiés sous forme de «ID», «code» et «difficulté». Maintenant, créons notre dataframe où nous pouvons utiliser ce multiindex.
Notre DataFrame est créé à l'aide du PD.Fonction DataFrame (). Notre DataFrame se compose de trois colonnes. La colonne «Sujet» stocke les noms des sujets («bio», «chimie», «C ++», «Stats», «Python»). La colonne «Field» dépasse les valeurs de chaîne qui représentent le domaine de chaque sujet («science», «science», «programmation», «mathématiques», «programmation»). Alors qu'il stocke la colonne «Passing_marks», les marques les moins passantes de chaque sujet (45, 45, 50, 40, 50). Il y a un index à trois niveaux dans notre DataFrame comme vous pouvez le voir sur le côté gauche de notre DataFrame «DF».
Comme notre DataFrame avec MultiIndex est créé maintenant, nous utilisons la fonction TO_RECORD () pour aplatir les multiples index en colonnes du DataFrame. Un dataframe peut être transformé en un tableau Numpy à l'aide de la fonction to_records (). Si demandé, l'index est mis comme le premier champ du tableau d'enregistrement. Si défini, incluez l'index dans le tableau d'enregistrement résultant à l'aide de l'étiquette d'index ou de l'index stocké dans l'étiquette de champ. Cependant, dans cet exemple, nous utiliserons simplement la fonction to_record () pour modifier les index à plusieurs niveaux de MultiIndex DataFrame en colonnes de données de données simples.
Comme on peut le voir dans la sortie, tous les niveaux d'index sont convertis avec succès en colonne DataFrame. Contrairement à la fonction reset_index (), nous ne pouvons pas aplatir un index spécifique à la colonne. Lorsqu'il est appliqué à la dataframe, il aplatit toutes les index multi-index vers les colonnes de dataframe.
Conclusion
Dans ce tutoriel, nous avons vu que le multiindex est un ensemble de méthodes d'indexation sophistiquées pour les dataframes. Il permet aux index d'avoir de nombreux niveaux. Nous avons appris à créer un multiindex avec des tuples et des tableaux en utilisant les fonctions FROM_TUPLES () et From_Array (), respectivement. Nous avons mis en œuvre les exemples pour vous apprendre à aplatir le multiindex de tous les niveaux et des niveaux spécifiques en utilisant la fonction reset_index () et to_records ().