Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich einen Pandas-DataFrame in Python Pivotieren?
Wie kann ich einen Datenrahmen drehen?
Was ist Pivot?
Pivotieren ist ein Datentransformationstechnik, mit der ein DataFrame durch Austauschen der Zeilen und Spalten umgeformt wird. Es wird häufig verwendet, um Daten so zu organisieren, dass sie einfacher zu analysieren oder zu visualisieren sind.
Wie führe ich eine Pivotierung durch?
Es gibt mehrere Möglichkeiten, einen DataFrame zu schwenken Python mit der Pandas-Bibliothek:
1. pd.DataFrame.pivot_table:
Diese Methode ist eine vielseitige und funktionsreiche Option zum Pivotieren von Daten. Hier können Sie die zu aggregierenden Werte, die Aggregationsfunktion sowie die Zeilen- und Spaltenindizes angeben.
Beispiel:
import pandas as pd # Create a sample DataFrame df = pd.DataFrame({ "row": ["row0", "row1", "row2", "row3", "row4"], "col": ["col0", "col1", "col2", "col3", "col4"], "val0": [0.81, 0.44, 0.77, 0.15, 0.81], "val1": [0.04, 0.07, 0.01, 0.59, 0.64] }) # Pivot the DataFrame using pivot_table df_pivoted = df.pivot_table( index="row", columns="col", values="val0", aggfunc="mean", ) print(df_pivoted) # Output: col0 col1 col2 col3 col4 row row0 0.77 0.445 0.000 0.860 0.650 row1 0.130 0.000 0.395 0.500 0.250 row2 0.000 0.310 0.000 0.545 0.000 row3 0.000 0.100 0.395 0.760 0.240 row4 0.000 0.000 0.000 0.000 0.000
2. pd.DataFrame.groupby pd.DataFrame.unstack:
Diese Methode beinhaltet das Gruppieren des DataFrame nach den gewünschten Zeilen- und Spaltenindizes und die anschließende Verwendung von Unstack zum Pivotieren der gruppierten Daten.
Beispiel:
# Group the DataFrame by row and col df_grouped = df.groupby(["row", "col"]) # Perform pivot using unstack df_pivoted = df_grouped["val0"].unstack(fill_value=0) print(df_pivoted) # Output: col col0 col1 col2 col3 col4 row row0 0.81 0.445 0.000 0.860 0.650 row1 0.130 0.000 0.395 0.500 0.250 row2 0.000 0.310 0.000 0.545 0.000 row3 0.000 0.100 0.395 0.760 0.240 row4 0.000 0.000 0.000 0.000 0.000
3. pd.DataFrame.set_index pd.DataFrame.unstack:
Diese Methode beinhaltet das Festlegen der gewünschten Zeilen- und Spaltenindizes als Index des DataFrames und die anschließende Verwendung von Unstack zum Pivotieren der Daten.
Beispiel:
# Set the row and col as the DataFrame's index df = df.set_index(["row", "col"]) # Perform pivot using unstack df_pivoted = df["val0"].unstack(fill_value=0) print(df_pivoted) # Output: col col0 col1 col2 col3 col4 row row0 0.81 0.445 0.000 0.860 0.650 row1 0.130 0.000 0.395 0.500 0.250 row2 0.000 0.310 0.000 0.545 0.000 row3 0.000 0.100 0.395 0.760 0.240 row4 0.000 0.000 0.000 0.000 0.000
4. pd.DataFrame.pivot:
Diese Methode bietet im Vergleich zu „pivot_table“ eine einfachere Syntax, verfügt jedoch über eingeschränkte Funktionalität. Sie können nur Zeilen- und Spaltenindizes angeben und keine Aggregation durchführen.
Beispiel:
# Perform pivot using pivot df_pivoted = df.pivot(index="row", columns="col") print(df_pivoted) # Output: col col0 col1 col2 col3 col4 row row0 key0 0.81 0.44 0.00 0.86 0.65 row1 key1 0.13 0.00 0.39 0.50 0.25 row2 key1 0.00 0.31 0.00 0.54 0.00 row3 key0 0.00 0.10 0.39 0.76 0.24 row4 key1 0.00 0.00 0.00 0.00 0.00
Langformat in Breitformat
So konvertieren Sie einen DataFrame vom Langformat ins Breitformat mit nur zwei Spalten:
1. pd.DataFrame.pivot(index=column_to_index, columns=column_to_columns, Values=values_to_pivot**):
Beispiel:
df["Combined"] = df["row"] + "|" + df["col"] df_pivoted = df.pivot(index="Combined", columns="A", values="B") print(df_pivoted) # Output: A a b c Combined row0|col0 0.0 10.0 7.0 row1|col1 11.0 10.0 NaN row2|col2 2.0 14.0 NaN row3|col3 11.0 NaN NaN row4|col4 NaN NaN NaN
2. pd.DataFrame.groupby pd.DataFrame.unstack:
df["Combined"] = df["row"] + "|" + df["col"] df_grouped = df.groupby(["Combined", "A"]) df_pivoted = df_grouped["B"].unstack(fill_value=0) print(df_pivoted) # Output: A a b c Combined row0|col0 0.0 10.0 7.0 row1|col1 11.0 10.0 NaN row2|col2 2.0 14.0 NaN row3|col3 11.0 NaN NaN row4|col4 NaN NaN NaN
Den Mehrfachindex nach dem Pivot auf einen einzelnen Index reduzieren:
df_pivoted.columns = df_pivoted.columns.map("|".join) print(df_pivoted) # Output: a|col0 b|col0 c|col0 a|col1 b|col1 c|col1 a|col2 b|col2 c|col2 a|col3 b|col3 c|col3 row row0 0.0 10.0 7.0 11.0 10.0 NaN 2.0 14.0 NaN 11.0 NaN NaN row1 0.0 10.0 7.0 11.0 10.0 NaN 2.0 14.0 NaN 11.0 NaN NaN
Das obige ist der detaillierte Inhalt vonWie kann ich einen Pandas-DataFrame in Python Pivotieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!