Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich DataFrames in Pandas effizient Pivotieren?

Wie kann ich DataFrames in Pandas effizient Pivotieren?

DDD
DDDOriginal
2024-12-25 13:29:42780Durchsuche

How Can I Efficiently Pivot DataFrames in Pandas?

Pivotieren eines DataFrame

Einführung

Pivotieren, auch Transponieren genannt, ist ein häufiger Vorgang bei der Datentransformation, bei dem Zeilen und Spalten vertauscht werden. Dies kann für Aufgaben wie das Umformen von Daten in ein geeigneteres Format oder das Erstellen von Berichten, die Daten über mehrere Dimensionen hinweg zusammenfassen, nützlich sein. In Python bietet Pandas mehrere Methoden zum Pivotieren eines DataFrames, jede mit ihren eigenen Stärken und Einschränkungen.

Grundlegendes Pivotieren

Für das grundlegende Pivotieren können Sie die folgenden Methoden verwenden:

pandas.pivot_table: Diese Methode bietet eine flexible Schnittstelle zum Pivotieren von Daten durch Angabe der zu verwendenden Spalten Zeilen, Spalten und Werte. Unterstützt verschiedene Aggregationsfunktionen wie Mittelwert, Summe, Anzahl usw.

pandas.DataFrame.groupby pandas.unstack: Gruppieren Sie die Daten mit Groupby nach den gewünschten Spalten und entstapeln Sie dann den resultierenden MultiIndex mit Entstapeln, um den geschwenkten DataFrame zu erstellen.

Erweitertes Pivotieren

Für komplexeres Pivotieren Für Operationen können Sie die folgenden Methoden verwenden:

pandas.DataFrame.set_index pandas.unstack: Ähnlich wie Groupby, aber effizienter, wenn Sie auf einem eindeutigen Satz von Zeilen und Spalten schwenken.

pandas.DataFrame.pivot: Eine prägnantere Version von Pivot_table, jedoch mit eingeschränkter Funktionalität Funktionalität.

Andere Methoden

pandas.crossstab: Nützlich zum Erstellen einer Kontingenztabelle (Kreuztabelle), einer Art Pivot, der Daten über zwei kategoriale Variablen hinweg aggregiert.

pandas.factorize numpy.bincount: Eine fortgeschrittenere Technik, die kann für bestimmte Vorgänge schneller sein. Verwendet Faktorisierung, um kategoriale Werte in eindeutige Ganzzahlen umzuwandeln, und verwendet dann Bincount, um die Vorkommen zu zählen.

pandas.get_dummies pandas.DataFrame.dot: Eine kreative Möglichkeit, Kreuztabellen mithilfe von Dummy-Variablen durchzuführen .

Beispiele

Hier sind einige Beispiele für deren Verwendung Methoden:

# Import pandas
import pandas as pd

# Create a sample DataFrame
df = pd.DataFrame({
    "key": ["a", "b", "c", "a", "b"],
    "row": [1, 2, 3, 4, 5],
    "col": ["col1", "col2", "col3", "col1", "col2"],
    "val": [10, 20, 30, 40, 50]
})

# Pivot using pivot_table
pivoted_df = pd.pivot_table(
    df, index="row", columns="col", values="val", aggfunc='mean', fill_value=0
)

# Pivot using groupby and unstack
pivoted_df = df.groupby(['row', 'col'])['val'].mean().unstack(fill_value=0)

Abflachung

Um den Multi-Index des geschwenkten DataFrames abzuflachen, können Sie je nach Spaltentyp unterschiedliche Ansätze verwenden:

If Spalten sind Zeichenfolgen:

pivoted_df.columns = pivoted_df.columns.map('|'.join)

Wenn Spalten sind Tupel:

pivoted_df.columns = pivoted_df.columns.map('{0[0]}|{0[1]}'.format)

Zusätzliche Hinweise

  • Stellen Sie bei der Auswahl von Spalten für die Pivotierung sicher, dass sie kategorisch sind oder eine begrenzte Anzahl eindeutiger Werte haben, um zu vermeiden, dass ein breiter DataFrame erstellt wird viele Spalten.
  • Achten Sie auf die Füllwerte, wenn Sie Aggregationsfunktionen verwenden, um fehlende Werte zu verarbeiten Daten.
  • Erwägen Sie die Verwendung leistungssteigernder Techniken wie set_index und faktorisieren für große Datensätze.
  • Erkunden Sie andere Optionen wie pandas.wide_to_long, wenn Sie Daten vom Breit- ins Langformat transponieren müssen.

Das obige ist der detaillierte Inhalt vonWie kann ich DataFrames in Pandas effizient 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