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
Freigeben: 2024-12-26 16:33:09
Original
246 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage