Entpivotieren Sie einen Python-Pandas-Datenrahmen
Python ist aufgrund seines großartigen datenzentrierten Paket-Ökosystems eine bevorzugte Sprache für die Datenanalyse. Eines dieser Pakete ist Pandas, das den Datenimport und die Analyse erheblich vereinfacht.
Dieser Artikel verwendet die Pandas dataframe melt()
function, um einen Dataframe vom Wide- ins Long-Format zu konvertieren, wobei optional Identifier-Variablen gesetzt bleiben.
Verwenden Sie die Funktion melt()
, um einen Python-Pandas-Datenrahmen zu entpivotieren
Diese Funktion kann einen Datenrahmen in ein Format konvertieren, in dem eine oder mehrere Spalten Bezeichnervariablen (ID-Variablen) sind. Alle anderen Spalten, die als gemessene Variablen (Wert-Variablen) betrachtet werden, sind auf die Zeilenachse unpivotiert
, sodass nur zwei Nicht-Identifikator-Spalten übrig bleiben, variable
und Wert
.
Syntax:
DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
Parameter:
-
frame
: Dies ist der DataFrame, den wir verwenden. -
id_vars
: Dies ist die Spalte, die wir als Kennungsvariable verwenden. -
value_vars
: Dies wird zum Unpivotieren verwendet. var_name
: Dies gibt einen Namen für die Variablenspalte an. Wenn nichts angegeben ist, wird der Rahmen, die Variable oder der Spaltenname verwendet.-
value_name
: Der Wertspalte sollte ein eindeutiger Name gegeben werden. -
col_level
: Verwenden Sie dieses Level, um die Spalten zu schmelzen, wenn es sich um MultiIndizes handelt. Returns
: Konvertieren Sie einen DataFrame in ein Format mit einer oder mehreren Identifier-Variablen in jeder Spalte.
Beispiel 1:
Erstellen Sie zuerst einen Datenrahmen mit den Spalten A
, Bsc
, Cse
und xyz
.
import pandas as pd
df = pd.DataFrame(
{
"A": [12, 4, 5, 44, 1],
"Bsc": [5, 2, 54, 3, 2],
"Cse": [20, 16, 7, 3, 8],
"xyz": [14, 3, 17, 2, 6],
}
)
df
Ausgang:
| | A | Bsc | Cse | xyz |
| ---- | ---- | ---- | ---- | ---- |
| 0 | 12 | 5 | 20 | 14 |
| 1 | 4 | 2 | 16 | 3 |
| 2 | 5 | 54 | 7 | 17 |
| 3 | 44 | 3 | 3 | 2 |
| 4 | 1 | 2 | 8 | |
Die folgende Funktion entpivotiert den Datenrahmen. Hier ist A
ein Bezeichner und die Spalte Bsc
ist die Wertvariable.
df.melt(id_vars=["A"], value_vars=["Bsc"])
Ausgang:
| | A | variable | value |
| ---- | ---- | -------- | ----- |
| 0 | 12 | Bsc | 5 |
| 1 | 4 | Bsc | 2 |
| 2 | 5 | Bsc | 54 |
| 3 | 44 | Bsc | 3 |
| 4 | 1 | Bsc | 2 |
Beispiel 2:
Legen Sie mit der Funktion dataframe.melt()
die Spalte A
als Bezeichnervariable und die Spalten Bsc
und Csc
als Wertvariablen fest.
df.melt(
id_vars=["A"],
value_vars=["Bsc", "Cse"],
var_name="Variable_column",
value_name="Value_column",
)
Ausgang:
| index | A | Variable_column | Value_column |
| ----- | ---- | --------------- | ------------ |
| 0 | 12 | Bsc | 5 |
| 1 | 4 | Bsc | 2 |
| 2 | 5 | Bsc | 54 |
| 3 | 44 | Bsc | 3 |
| 4 | 1 | Bsc | 2 |
| 5 | 12 | Cse | 20 |
| 6 | 4 | Cse | 16 |
| 7 | 5 | Cse | 7 |
| 8 | 44 | Cse | 3 |
| 9 | 1 | Cse | |
Abschluss
In diesem Artikel haben wir besprochen, wie Sie einen Datenrahmen entpivotieren oder einen Datenrahmen in ein langes Format konvertieren, um die Anzahl der Zeilen zu erhöhen.
Dazu haben wir die Funktion melt()
verwendet. Eine Spalte wird als Variablenbezeichner bezeichnet, während die andere der Wert des Bezeichners ist.