Passer d’un format large à un format long avec melt()

La méthode melt() permet de transformer un DataFrame d’un format large (wide) en un format long (long format). Elle est souvent utilisée pour « déplier » un DataFrame en plusieurs lignes, où chaque observation est associée à une colonne spécifique de manière plus lisible ou mieux adaptée à certaines analyses.

Fonctions :

  • df.melt(id_vars=['col1'], value_vars=['col2', 'col3'])

    La méthode melt() permet de transformer un DataFrame depuis un format large (wide) en un format long (tidy). C'est l'opposé de pivot() : on réduit le nombre de colonnes en empilant leurs valeurs, tout en conservant les colonnes identifiantes. ➡️ Très utile pour : Préparer des données pour certains types d'analyses ou visualisations (ex : seaborn attend souvent un format long). Dénormaliser des données avant des transformations supplémentaires.

    Importation :

    import pandas as pd

    Attributs :

    Paramètre Description
    id_vars Les colonnes identifiantes à conserver (restent inchangées).
    value_vars Les colonnes à déplier en une seule colonne (fusionnées en deux nouvelles colonnes : variable et value).
    var_name (optionnel) Nom de la colonne résultante contenant les noms des colonnes originales (par défaut : 'variable').
    value_name (optionnel) Nom de la colonne résultante contenant les valeurs (par défaut : 'value').

    Exemple de code :

    import pandas as pd
    
    # Exemple de DataFrame large
    df = pd.DataFrame({
        'Date': ['2024-01-01', '2024-01-02'],
        'Produit_A': [100, 120],
        'Produit_B': [150, 130]
    })
    
    # Transformation en format long
    long_df = df.melt(id_vars=['Date'], value_vars=['Produit_A', 'Produit_B'], 
                      var_name='Produit', value_name='Vente')
    
    print(long_df)

    Explication du code :

    On applique melt() :

      • id_vars=['Date'] ➡️ La colonne Date reste fixe.
      • value_vars=['Produit_A', 'Produit_B'] ➡️ Les colonnes Produit_A et Produit_B sont fondues en 2 colonnes :
        • Produit ➡️ Noms des colonnes d'origine (Produit_A, Produit_B).
        • Vente ➡️ Valeurs associées.

    🔹 Remarques pratiques

    • Melt est indispensable pour restructurer les données avant :

      • Des graphes avec seaborn, plotly, etc.
      • Des groupby ou des aggregations par catégories.
    • Tu peux renommer les colonnes résultantes avec var_name et value_name pour plus de clarté.

    • Si tu ne spécifies pas value_vars, melt() prendra toutes les colonnes sauf id_vars.