Utilisation de stack() pour empiler les colonnes en lignes

La méthode stack() permet de « empiler » les colonnes d’un DataFrame sous forme de lignes, créant ainsi une structure à plusieurs niveaux (un MultiIndex) pour les nouvelles lignes.

Fonctions :

  • df.stack()

    La fonction stack() permet d'empiler les colonnes d'un DataFrame en lignes. Autrement dit, elle transforme un DataFrame en une structure de type série (avec un MultiIndex), où les colonnes sont regroupées sous l'index, et chaque cellule de ces colonnes devient une valeur dans une nouvelle série. Elle est particulièrement utile lorsque vous souhaitez convertir des données structurées en format large (avec plusieurs colonnes) en un format plus long, avec une seule colonne contenant toutes les valeurs de l'origine. Cette méthode permet également de simplifier le travail avec des données multi-indexées.

    Importation :

    import pandas as pd

    Attributs :

    Paramètre Type Description Valeur par défaut
    Aucun paramètre requis. None Par défaut, stack() empile toutes les colonnes. None

    Exemple de code :

    import pandas as pd
    
    # Création d'un DataFrame
    df = pd.DataFrame({
        'A': [1, 2, 3],
        'B': [4, 5, 6],
        'C': [7, 8, 9]
    })
    
    # Empiler les colonnes en lignes
    resultat_stack = df.stack()
    
    # Afficher le résultat
    print(resultat_stack)

    Explication du code :

    1. df.stack() :

      • Cette ligne empile les colonnes du DataFrame df sous une nouvelle structure où chaque valeur de chaque colonne devient une ligne.
      • Le résultat de stack() est une série où l'index est constitué de deux niveaux : l'index original du DataFrame et les noms des colonnes, qui sont transformés en un deuxième niveau de l'index.
    2. Transformation en MultiIndex :

      • stack() crée un MultiIndex pour l'index de la série résultante, avec les niveaux d'index d'origine du DataFrame et les noms des colonnes empilées.

    🔹 Remarques pratiques

    • Conversion en série :
      stack() convertit un DataFrame en une série où l'index est un MultiIndex. Chaque ligne de la série correspond à une valeur d'origine, et chaque colonne est empilée sous un index supplémentaire.

    • Utilisation de unstack() pour l'inverse :
      Vous pouvez également utiliser la fonction unstack() pour transformer une série ou un DataFrame à multi-index en un format plus large (en étalant les valeurs d'un des niveaux de l'index en colonnes).

    • Données manquantes :
      Si certaines colonnes contiennent des valeurs manquantes (NaN), ces valeurs seront également empilées et apparaîtront dans la série résultante.