So erstellen Sie Pivot-Tabellen in Python

Von Fabian
Kategorie: Python
Lesezeit: 3 Minuten

Eine Pivot-Tabelle ist ein Tabellentyp, der ein Dataset mithilfe von Zusammenfassungsstatistiken zusammenfasst.

Wir können Pivot-Tabellen in Python erstellen, indem wir die Funktion pivot_table aus dem Pandas-Paket verwenden, die die folgende Syntax verwendet:

pivot_table(data, index=None, values=None, aggfunc=’mean’, fill_value=None, …)

wo:

  • data: Name des DataFrame
  • index: Spalten des DataFrames, nach denen gruppiert werden soll
  • values: Spalten des DataFrames, die aggregiert werden sollen
  • aggfunc: Zu verwendende Aggregatfunktion. Der Standardwert ist Mittelwert.
  • fill_value: Wert, durch den fehlende Werte ersetzt werden sollen.

Beispiel: Pivot-Tabellen in Python

Angenommen, wir haben den folgenden Datensatz, der Informationen zu acht Basketballspielern enthält:

import pandas as pd

data = {'team': ['E', 'E', 'C', 'C', 'C', 'W', 'W', 'W'],
        'player': ['Andy', 'Ben', 'Chris', 'Dwight', 'Elias', 'Frank', 'Greg', 'Hank'],
        'rebounds': [12, 14, 13, 7, 8, 8, 9, 13],
        'points': [22, 24, 26, 26, 29, 32, 20, 14]
        }

df = pd.DataFrame(data,columns=['team', 'player', 'rebounds','points'])
df

   team  player  rebounds  points
0     E    Andy        12      22
1     E     Ben        14      24
2     C   Chris        13      26
3     C  Dwight         7      26
4     C   Elias         8      29
5     W   Frank         8      32
6     W    Greg         9      20
7     W    Hank        13      14

Um die durchschnittliche Anzahl von Punkten und Rebounds zu ermitteln, die von Spielern in jedem Team erzielt wurden, können wir die folgende Syntax verwenden:

pd.pivot_table(df,index=['team'])

     points   rebounds
team 
   C     27   9.333333
   E     23  13.000000
   W     22  10.000000

Um nur die durchschnittliche Anzahl von Punkten zu ermitteln, die von Spielern in jedem Team erzielt wurden, können wir die folgende Syntax verwenden:

pd.pivot_table(df,index=['team'], values=['points'])

     points
team 
   C     27
   E     23
   W     22

Um die Gesamtzahl der Punkte zu ermitteln, die die Spieler in jedem Team erzielt haben, können wir die folgende Syntax verwenden:

pd.pivot_table(df,index=['team'], values=['points'], aggfunc='sum')

     points
team 
   C     81
   E     46
   W     66

Um die maximale Anzahl von Punkten zu ermitteln, die von Spielern in jedem Team erzielt wurden, können wir die folgende Syntax verwenden:

pd.pivot_table(df,index=['team'], values=['points'], aggfunc='max')

     points
team 
   C     29
   E     34
   W     32

Um die Gesamtzahl der einzelnen Spieler in jedem Team zu ermitteln, können wir die folgende Syntax verwenden:

pd.pivot_table(df,index=['team'], values=['player'], aggfunc='count')

     player
team 
   C      3
   E      2
   W      3

Umgang mit fehlenden Werten

Angenommen, Ihr Datensatz enthält fehlende Werte:

import pandas as pd 
import numpy as np

data = {'team': ['E', 'E', 'C', 'C', 'C', 'W', 'W', 'W'],
        'player': ['Andy', 'Ben', 'Chris', 'Dwight', 'Elias', 'Frank', 'Greg', 'Hank'],
        'rebounds': [12, 14, np.NaN, 7, 8, np.NaN, 9, 13],
        'points': [22, 24, 26, 26, 29, 32, np.NaN, 14]
        }

df = pd.DataFrame(data,columns=['team', 'player', 'rebounds','points'])
df

   team  player    rebounds   points
0     E    Andy        12.0     22.0
1     E     Ben        14.0     24.0
2     C   Chris         NaN     26.0
3     C  Dwight         7.0     26.0
4     C   Elias         8.0     29.0
5     W   Frank         NaN     32.0
6     W    Greg         9.0      NaN
7     W    Hank        13.0     14.0

Zur Berechnung von Zusammenfassungsstatistiken können Sie Numpy-Funktionen verwenden, bei denen fehlende Werte automatisch ignoriert werden. So berechnen Sie beispielsweise die durchschnittliche Anzahl der Punkte, die von Spielern in jedem Team erzielt wurden:

pd.pivot_table(df,index=['team'], values=['points'], aggfunc=[np.mean])

          mean
      points
team    
C       27.0
E       23.0
W       23.0

Pivot-Tabellen filtern

Sobald Sie eine Pivot-Tabelle erstellt haben, können Sie sie filtern.

Angenommen, wir möchten nur die Durchschnittsstatistik für Spieler anzeigen, die zu Team W gehören:

pivotTable = pd.pivot_table(df,index=['team'])

pivotTable.query('team == ["W"]')

     points  rebounds
team 
   W   23.0      11.0

Oder nehmen wir an, wir möchten nur die Durchschnittsstatistik für Spieler in den Teams E oder W anzeigen:

pivotTable.query('team == ["E", "W"]')

     points  rebounds
team 
   E   23.0      13.0
   W   23.0      11.0

Die vollständige Dokumentation zur Funktion pivot_table finden Sie hier.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: