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 queid_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)
Explication du code :
La ligne
import pandas as pd
importe la bibliothèque pandas, renommée ici enpd
pour faciliter son utilisation dans le code.Exemple de DataFrame
Un DataFrame nommé
df
est créé avec les colonnes suivantes :id
,janvier
,février
, etmars
. 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 colonneid
est utilisée comme identifiant dans le format long.var_name='mois'
: Les noms des mois deviendront la colonnemois
.value_name='ventes'
: Les valeurs de vente pour chaque mois seront dans la colonneventes
.
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 avecmelt()
.