Heim > Backend-Entwicklung > Python-Tutorial > So drehen Sie einen Pandas-DataFrame: Eine umfassende Anleitung zum Umformen von Daten?

So drehen Sie einen Pandas-DataFrame: Eine umfassende Anleitung zum Umformen von Daten?

DDD
Freigeben: 2024-12-25 10:25:09
Original
157 Leute haben es durchsucht

How to Pivot a Pandas DataFrame: A Comprehensive Guide to Reshaping Data?

Wie kann ich einen Datenrahmen drehen?

Was ist Pivot?

  • Umformen eines Datenrahmens von lang nach breites Format
  • Ermöglicht die Erstellung eines neuen DataFrame mit Werten werden basierend auf einer oder mehreren Spalten aggregiert

Wie führe ich eine Pivotierung durch?

  • Mehrere Methoden zum Pivotieren eines DataFrame:

    • pd.DataFrame.pivot_table
    • pd.DataFrame.groupby pd.DataFrame.unstack
    • pd.DataFrame.set_index pd.DataFrame.unstack
    • pd.DataFrame.pivot (weniger flexibel)
    • pd.crossstab (für Kreuztabellen)
    • pd.factorize np.bincount (erweitert, hoch Leistung)
    • pd.get_dummies pd.DataFrame.dot (Kreuztabelle)

Langformat in Breitformat?

  • Langformat:

    • Jede Beobachtung belegt einen Platz Zeile
    • Mehrere Spalten, die verschiedene Attribute/Messungen darstellen
  • Breites Format:

    • Jede Beobachtung belegt eine Spalte
    • Mehrere Zeilen repräsentieren unterschiedliche Attribute/Messungen

Beispiele

Frage 1: Warum erhalte ich ValueError: Index enthält doppelte Einträge, kann nicht umgeformt werden?

  • Dies tritt auf, wenn versucht wird, einen DataFrame mit doppelten Schlüsseln zu schwenken, auf dem er sich befindet geschwenkt
  • Beispiel: Wenn df doppelte Einträge für Zeile und Spalte hat und Sie mit df.pivot(index='row', columns='col') schwenken, erhalten Sie den Fehler.

Frage 2: Wie schwenke ich df so, dass die Spaltenwerte Spalten, die Zeilenwerte der Index und der Mittelwert von val0 sind Werte?

  • Verwenden Sie pd.DataFrame.pivot_table:

    df.pivot_table(values='val0', index='row', columns='col', aggfunc='mean')
    Nach dem Login kopieren
    Nach dem Login kopieren

Frage 3: Wie stelle ich sicher, dass fehlende Werte 0 sind ?

  • Verwenden Sie das Argument fill_value in pd.DataFrame.pivot_table:

    df.pivot_table(values='val0', index='row', columns='col', fill_value=0, aggfunc='mean')
    Nach dem Login kopieren
    Nach dem Login kopieren

Frage 4: Kann ich etwas anderes als den Mittelwert erhalten, wie vielleicht die Summe?

  • Verwenden Sie a anderes aggfunc-Argument in pd.DataFrame.pivot_table:

    df.pivot_table(values='val0', index='row', columns='col', fill_value=0, aggfunc='sum')
    Nach dem Login kopieren
    Nach dem Login kopieren

Frage 5: Kann ich mehr als eine Aggregation gleichzeitig durchführen?

  • Stellen Sie eine Liste bereit von Callables zum aggfunc-Argument in pd.DataFrame.pivot_table:

    df.pivot_table(values='val0', index='row', columns='col', fill_value=0, aggfunc=[np.size, np.mean])
    Nach dem Login kopieren

Frage 6: Kann ich über mehrere Wertespalten aggregieren?

  • Mehrere Spaltennamen als a übergeben Liste mit Werten in pd.DataFrame.pivot_table:

    df.pivot_table(values=['val0', 'val1'], index='row', columns='col', fill_value=0, aggfunc='mean')
    Nach dem Login kopieren

Frage 7: Kann ich nach mehreren Spalten unterteilen?

  • Mehrere Spaltennamen als Liste übergeben zum Indizieren oder Spalten in pd.DataFrame.pivot_table:

    df.pivot_table(values='val0', index=['row', 'item'], columns='col', fill_value=0, aggfunc='mean')
    Nach dem Login kopieren

Frage 8: Oder

  • Kann durch mehrere Spalten im Index und in Spalten unterteilt werden mit pd.DataFrame.pivot_table:

    df.pivot_table(values='val0', index=['key', 'row'], columns=['item', 'col'], fill_value=0, aggfunc='mean')
    Nach dem Login kopieren

Frage 9: Kann ich die Häufigkeit, mit der die Spalte und die Zeilen zusammen auftreten, aggregieren, auch bekannt als „Kreuztabelle“?

  • Verwenden Sie pd.crossta:

    df.pivot_table(values='val0', index='row', columns='col', aggfunc='mean')
    Nach dem Login kopieren
    Nach dem Login kopieren

Frage 10: Wie konvertiere ich einen DataFrame von lang in breit, indem ich NUR auf zwei Spalten schwenke?

df.pivot_table(values='val0', index='row', columns='col', fill_value=0, aggfunc='mean')
Nach dem Login kopieren
Nach dem Login kopieren

Frage 11: Wie reduziere ich das Vielfache Index zu Einzelindex nach Pivot?

  • Dem mehrteiligen Index als Einzelindex beitreten Zeichenfolge:

    df.pivot_table(values='val0', index='row', columns='col', fill_value=0, aggfunc='sum')
    Nach dem Login kopieren
    Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo drehen Sie einen Pandas-DataFrame: Eine umfassende Anleitung zum Umformen von Daten?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage