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 Dataframes
  • 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, Sie haben fehlende Werte in Ihrem Datensatz:

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

Um zusammenfassende Statistiken zu berechnen, können Sie Numpy-Funktionen verwenden, die fehlende Werte automatisch ignorieren. So berechnen Sie beispielsweise die durchschnittliche Anzahl der Punkte, die Spieler in jedem Team erzielt haben:

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: