Pandas pandas.melt() Fonction

Minahil Noor 30 janvier 2023
  1. Syntaxe de pandas.melt()
  2. Exemples de codes: pandas.melt()
  3. Exemples de codes: pandas.melt() avec une colonne unique comme id_vars
  4. Exemples de codes: pandas.melt() avec saut de colonnes
  5. Exemples de codes: pandas.melt() avec plusieurs colonnes
Pandas pandas.melt() Fonction

La fonction pandas.melt() remodèle ou transforme un DataFrame existant. Il change l’orientation du DataFrame d’un format large à un format long.

Syntaxe de pandas.melt()

pandas.melt(dataframe, id_vars, value_vars, var_name, value_name, col_level)

Paramètres

dataframe obligatoire C’est le DataFrame que nous souhaitons changer en format long.
id_vars optionnel Il peut s’agir d’un tuple, d’une liste ou d’un tableau à N dimensions. Il s’agit de la colonne utilisée pour les variables d’identification. Vous pouvez sélectionner plusieurs colonnes d’identifiant.
value_vars optionnel Il peut s’agir d’un tuple, d’une liste ou d’un tableau à N dimensions. Par défaut, les colonnes non spécifiées comme variables identifiantes sont des variables de valeur. Vous pouvez également les sélectionner.
var_name optionnel Il s’agit d’une variable de type scalaire. Il s’agit du nom de la colonne identifiant. Par défaut, c’est variable.
value_name optionnel Il s’agit d’une variable de type scalaire. Il s’agit du nom de la colonne non identifiante. Par défaut, c’est value.
col_level optionnel Il s’agit d’un “entier” ou d’une string. Dans le cas de colonnes multi-index, nous pouvons utiliser ce paramètre pour transformer notre DataFrame.

Revenir

Il retourne un DataFrame transformé qui contient une ou plusieurs colonnes identifiantes et seulement deux colonnes non identifiantes nommées variable et valeur.

Exemples de codes: pandas.melt()

Dans un premier temps, nous vérifierons cette fonction en ne passant que le paramètre obligatoire c’est-à-dire DataFrame.

import pandas as pd

dataframe=pd.DataFrame({'Attendance': {0: 60, 1: 100, 2: 80,3: 78,4: 95},
                    'Name': {0: 'Olivia', 1: 'John', 2: 'Laura',3: 'Ben',4: 'Kevin'},
                    'Obtained Marks': {0: '90%', 1: '75%', 2: '82%',3: '64%',4: '45%'}})
dataframe1 = pd.melt(dataframe)

print(dataframe1)

Notre DataFrame ressemble

   Attendance    Name Obtained Marks
0          60  Olivia            90%
1         100    John            75%
2          80   Laura            82%
3          78     Ben            64%
4          95   Kevin            45%

Production:

          variable   value
0       Attendance      60
1       Attendance     100
2       Attendance      80
3       Attendance      78
4       Attendance      95
5             Name  Olivia
6             Name    John
7             Name   Laura
8             Name     Ben
9             Name   Kevin
10  Obtained Marks     90%
11  Obtained Marks     75%
12  Obtained Marks     82%
13  Obtained Marks     64%
14  Obtained Marks     45%

Ici, vous pouvez voir qu’en sortie il n’y a pas de colonne d’identifiant. Nous avons deux colonnes non identifiantes. Chaque colonne du DataFrame d’origine est maintenant une ligne dans la sortie DataFrame.

Nous allons maintenant passer les paramètres facultatifs et vérifier les résultats.

Exemples de codes: pandas.melt() avec une colonne unique comme id_vars

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
    }
)
dataframe1 = pd.melt(dataframe, id_vars=["Name"])

print(dataframe1)

Production:

     Name        variable value
0  Olivia      Attendance    60
1    John      Attendance   100
2   Laura      Attendance    80
3     Ben      Attendance    78
4   Kevin      Attendance    95
5  Olivia  Obtained Marks   90%
6    John  Obtained Marks   75%
7   Laura  Obtained Marks   82%
8     Ben  Obtained Marks   64%
9   Kevin  Obtained Marks   45%

La colonne d’identifiant est spécifiée comme Name, et les colonnes variable et value sont à côté d’elle avec les valeurs extraites de la trame de données d’origine.

Nous pourrions également attribuer des noms de var_name et value_name pour remplacer les variable et valeurs par défaut.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
    }
)
dataframe1 = pd.melt(
    dataframe, id_vars=["Name"], var_name="Performance", value_name="Success"
)

print(dataframe1)

Production:

     Name     Performance Success
0  Olivia      Attendance      60
1    John      Attendance     100
2   Laura      Attendance      80
3     Ben      Attendance      78
4   Kevin      Attendance      95
5  Olivia  Obtained Marks     90%
6    John  Obtained Marks     75%
7   Laura  Obtained Marks     82%
8     Ben  Obtained Marks     64%
9   Kevin  Obtained Marks     45%

Exemples de codes: pandas.melt() avec saut de colonnes

Si nous voulons vérifier la présence uniquement, nous devons spécifier les value_vars.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
    }
)
dataframe1 = pd.melt(
    dataframe,
    id_vars=["Name"],
    value_vars="Attendance",
    var_name="Performance",
    value_name="Success",
)
print(dataframe1)

Production:

     Name Performance  Success
0  Olivia  Attendance       60
1    John  Attendance      100
2   Laura  Attendance       80
3     Ben  Attendance       78
4   Kevin  Attendance       95

Il affiche uniquement les informations de la colonne Attendance dans la trame de données d’origine.

Exemples de codes: pandas.melt() avec plusieurs colonnes

Nous ajoutons une colonne supplémentaire ID à la trame de données de démonstration.

import pandas as pd

dataframe = pd.DataFrame(
    {
        "Attendance": {0: 60, 1: 100, 2: 80, 3: 78, 4: 95},
        "ID": {0: 1, 1: 2, 2: 3, 3: 4, 4: 5},
        "Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
        "Obtained Marks": {0: "90%", 1: "75%", 2: "82%", 3: "64%", 4: "45%"},
    }
)
dataframe1 = pd.melt(dataframe, id_vars=["ID", "Name"])

print(dataframe1)

Production:

   ID    Name        variable value
0   1  Olivia      Attendance    60
1   2    John      Attendance   100
2   3   Laura      Attendance    80
3   4     Ben      Attendance    78
4   5   Kevin      Attendance    95
5   1  Olivia  Obtained Marks   90%
6   2    John  Obtained Marks   75%
7   3   Laura  Obtained Marks   82%
8   4     Ben  Obtained Marks   64%
9   5   Kevin  Obtained Marks   45%

Les colonnes ID et Name sont affectées en tant que colonnes identifiantes.

Article connexe - Pandas Core