Pandas melt() Funktion

Pandas melt() Funktion

Minahil Noor Feb-17, 2021 Nov-05, 2020 Pandas Pandas Core
  1. Syntax von Funktion pandas.melt()
  2. Beispiel-Codes: pandas.melt()
  3. Beispiel-Codes: pandas.melt() Mit einer einzelnen Spalte als id_vars
  4. Beispiel-Codes: pandas.melt() mit Überspringen von Spalten
  5. Beispiel-Codes: pandas.melt() mit mehreren Spalten

Die Funktion pandas.melt() formt oder transformiert einen bestehenden DataFrame um. Sie ändert die Ausrichtung des DataFrame von einem breiten Format in ein langes Format.

Syntax von Funktion pandas.melt()

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

Parameter

Dataframe obligatorisch Es ist der DataFrame, den wir in das lange Format wechseln wollen.
id_vars optional Es kann ein Tupel, eine Liste oder ein N-dimensionales Array sein. Es ist die Spalte, die für Identifizierungsvariablen verwendet wird. Sie können mehr als eine Bezeichnerspalte auswählen.
value_vars optional Es kann ein Tupel, eine Liste oder ein N-dimensionales Array sein. Standardmäßig sind die Spalten, die nicht als Bezeichnungsvariablen angegeben sind, Wertvariablen. Sie können diese auch auswählen.
var_name optional Es ist eine Variable vom Typ scalar. Es ist der Name der Bezeichnerspalte. Standardmäßig ist sie variabel.
value_name optional Es ist eine Variable vom Typ scalar. Es ist der Name der Nicht-Bezeichner-Spalte. Standardmäßig ist sie vom Typ value.
col_level optional Es ist eine Ganzzahl oder eine Zeichenkette. Im Falle von Multi-Index-Spalten können wir diesen Parameter verwenden, um unseren DataFrame zu transformieren.

Zurück

Es gibt einen transformierten DataFrame zurück, der eine oder mehrere Bezeichnerspalten und nur zwei Nicht-Bezeichnerspalten mit dem Namen Variable und Wert enthält.

Beispiel-Codes: pandas.melt()

Zuerst werden wir diese Funktion prüfen, indem wir nur den obligatorischen Parameter DataFrame übergeben.

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)

Unser DataFrame sieht folgendermaßen aus:

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

Ausgabe:

          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%

Hier sehen Sie, dass es in der Ausgabe keine Bezeichnerspalte gibt. Wir haben zwei Nicht-Bezeichner-Spalten. Jede Spalte des ursprünglichen DataFrame ist nun eine Zeile in der Ausgabe DataFrame.

Jetzt werden wir die optionalen Parameter übergeben und die Ergebnisse überprüfen.

Beispiel-Codes: pandas.melt() Mit einer einzelnen Spalte als 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)

Ausgabe:

     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%

Die Bezeichnerspalte wird als Name angegeben, und die Spalten variable und value stehen daneben mit den aus dem ursprünglichen DataFrame extrahierten Werten.

Wir könnten auch Namen von var_name und value_name zuweisen, um die voreingestellten variable und value zu ersetzen.

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)

Ausgabe:

     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%

Beispiel-Codes: pandas.melt() mit Überspringen von Spalten

Wenn wir nur die Anwesenheit prüfen wollen, müssen wir den value_vars angeben.

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)

Ausgabe:

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

Es werden nur die Informationen der Spalte Attendance im ursprünglichen DataFrame angezeigt.

Beispiel-Codes: pandas.melt() mit mehreren Spalten

Wir fügen dem Demo-DataFrame eine zusätzliche Spalte ID hinzu.

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)

Ausgabe:

   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%

Beide Spalten ID und Name werden als Bezeichnerspalten zugewiesen.

Verwandter Artikel - Pandas Core

  • Pandas read_csv()-Funktion
  • Python Pandas pandas.pivot_table() Funktion