Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich einen Pandas-DataFrame in Python Pivotieren?

Wie kann ich einen Pandas-DataFrame in Python Pivotieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-26 16:33:09211Durchsuche

How Can I Pivot a Pandas DataFrame in Python?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn