Convertir plusieurs colonnes en une seule avec melt()

La méthode melt() permet de convertir plusieurs colonnes d’un DataFrame en une seule colonne, tout en préservant les autres colonnes sous forme de variables supplémentaires. Cela transforme le DataFrame de format large en un format long, où les différentes valeurs de colonnes sont regroupées sous une seule colonne avec une variable identifiant la colonne d’origine. Cette opération est souvent utilisée pour faciliter l’analyse et la visualisation des données lorsque les informations sont réparties sur plusieurs colonnes.

Fonctions :

  • df.melt(id_vars=['id'], var_name='variable', value_name='valeur')

    La méthode melt() en pandas transforme un DataFrame du format large (wide) en format long (long). Elle rassemble plusieurs colonnes en une seule colonne de variables, ce qui est très utile pour normaliser les données et les rendre compatibles avec des fonctions d'analyse ou de visualisation comme sns.lineplot() ou plt.plot(). ✅ C'est l'opposé de pivot() ou pivot_table().

    Importation :

    import pandas as pd

    Attributs :

    Paramètre Description
    id_vars Liste des colonnes à conserver telles quelles (ex. identifiants, catégories).
    value_vars Liste des colonnes à convertir en deux colonnes (variable + valeur). Par défaut : toutes les colonnes autres que id_vars.
    var_name Nom de la nouvelle colonne contenant le nom des anciennes colonnes (par défaut 'variable').
    value_name Nom de la colonne contenant les valeurs correspondantes (par défaut 'value').
    col_level Pour DataFrame avec colonnes multi-niveaux, sélectionne le niveau de colonnes à transformer.
    ignore_index Si True, ignore l'index existant et génère un nouvel index (pandas 1.1.0+).

    Exemple de code :

    import pandas as pd
    
    # Exemple de DataFrame
    df = pd.DataFrame({
        'id': [1, 2, 3],
        'janvier': [100, 200, 300],
        'février': [110, 210, 310],
        'mars': [120, 220, 320]
    })
    
    print("DataFrame d'origine:\n", df)
    
    # Conversion du format large en format long
    df_melt = df.melt(
        id_vars=['id'],
        var_name='mois',
        value_name='ventes'
    )
    
    print("\nDataFrame après melt():\n", df_melt)
    Résultat du code

    Explication du code :

    La ligne import pandas as pd importe la bibliothèque pandas, renommée ici en pd pour faciliter son utilisation dans le code.

    Exemple de DataFrame

    Un DataFrame nommé df est créé avec les colonnes suivantes : id, janvier, février, et mars. Ces colonnes contiennent des données relatives à des ventes sur ces trois mois pour différents identifiants.

    df = pd.DataFrame({
        'id': [1, 2, 3],
        'janvier': [100, 200, 300],
        'février': [110, 210, 310],
        'mars': [120, 220, 320]
    })

    Ce code crée un DataFrame où chaque ligne représente un identifiant avec les ventes sur plusieurs mois.

    Conversion du format large en format long

    La fonction melt() permet de convertir le DataFrame d'un format large (avec des colonnes pour chaque mois) en un format long, où chaque ligne représente une vente pour un mois donné.

    Les paramètres utilisés dans la fonction melt() sont :

    • id_vars=['id'] : La colonne id est utilisée comme identifiant dans le format long.
    • var_name='mois' : Les noms des mois deviendront la colonne mois.
    • value_name='ventes' : Les valeurs de vente pour chaque mois seront dans la colonne ventes.
    df_melt = df.melt(
        id_vars=['id'],
        var_name='mois',
        value_name='ventes'
    )

    Le résultat est un DataFrame où chaque ligne correspond à une vente, associée à un identifiant id, un mois et une valeur de vente.

    Afficher les résultats

    La ligne print("DataFrame d'origine:\n", df) affiche le DataFrame original avec le format large.

    La ligne print("\nDataFrame après melt():\n", df_melt) affiche le DataFrame après conversion au format long avec melt().