Pandas: so erstellen sie eine kreuztabelle mit prozentsätzen


Sie können das Argument normalize in der Funktion pandas crosstab() verwenden, um eine Kreuztabelle zu erstellen, die Prozentwerte anstelle von Zahlen anzeigt:

 p.d. crosstab (df. col1 , df. col2 , normalize=' index ')

Das Normalisierungsargument akzeptiert drei verschiedene Argumente:

  • alle : Prozentsatz relativ zu allen Werten anzeigen.
  • Index : Prozentsatz als Gesamtsumme der Zeilenwerte anzeigen.
  • Spalten : Zeigt den Prozentsatz als Gesamtsumme der Spaltenwerte an.

Die folgenden Beispiele zeigen, wie jede dieser Methoden in der Praxis mit dem folgenden Pandas DataFrame verwendet wird:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C '],
                   ' position ':['G', 'G', 'F', 'G', 'F', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [22, 25, 24, 39, 34, 20, 18, 17, 20, 19, 22]})

#view DataFrame
print (df)

   team position points
0 AG 22
1 AG 25
2 AF 24
3 BG 39
4 BF 34
5 BF 20
6 BF 18
7 GC 17
8 GC 20
9 CF 19
10 CF 22

So würde die Standardkreuztabelle für die Anzahl der Spieler pro Team und Position aussehen:

 #create crosstab that displays count by team and position
p.d. crosstab (df. team , df. position )

position F G
team		
AT 12
B 3 1
C 2 2

Beispiel 1: Erstellen Sie eine Kreuztabelle mit Prozentsätzen relativ zu allen Werten

Wir können die Funktion crosstab() mit dem Argument normalize=all verwenden, um eine Kreuztabelle zu erstellen, die die Prozentsätze jedes Werts im Verhältnis zur Gesamtzahl aller Werte anzeigt:

 #create crosstab that displays counts as percentage relative to total count
p.d. crosstab (df. team , df. position , normalize=' all ')

position F G
team		
A 0.090909 0.181818
B 0.272727 0.090909
C 0.181818 0.181818

So interpretieren Sie das Ergebnis:

  • Die Spieler von Team A auf Position F machen 9,09 % aller Spieler aus.
  • Die Spieler von Team A auf Position G machen 18,18 % aller Spieler aus.

Und so weiter.

Beispiel 2: Erstellen Sie eine Kreuztabelle mit Prozentsätzen gegenüber Zeilensummen

Wir können die Funktion crosstab() mit dem Argument normalize=index verwenden, um eine Kreuztabelle zu erstellen, die die Prozentsätze jedes Werts im Verhältnis zur Zeilensumme anzeigt:

 #create crosstab that displays counts as percentage relative to row totals
p.d. crosstab (df. team , df. position , normalize=' index ')

position F G
team		
A 0.333333 0.666667
B 0.750000 0.250000
C 0.500000 0.500000

So interpretieren Sie das Ergebnis:

  • Spieler auf Position F machen 33,33 % aller Spieler von Team A aus.
  • Spieler auf Position F machen 75 % aller Spieler in Team B aus.
  • Spieler auf Position F stellen 50 % aller Spieler von Team C dar.

Und so weiter.

Beispiel 3: Erstellen Sie eine Kreuztabelle mit Prozentsätzen gegenüber den Spaltensummen

Wir können die Funktion crosstab() mit dem Argument normalize=columns verwenden, um eine Kreuztabelle zu erstellen, die die Prozentsätze jedes Werts im Verhältnis zur Spaltensumme anzeigt:

 #create crosstab that displays counts as percentage relative to column totals
p.d. crosstab (df. team , df. position , normalize=' columns ')

position F G
team		
A 0.166667 0.4
B 0.500000 0.2
C 0.333333 0.4

So interpretieren Sie das Ergebnis:

  • Die Spieler der Mannschaft A machen 16,67 % aller Spieler mit einer F-Position aus.
  • Die Spieler von Team B machen 50 % aller Spieler mit einer F-Position aus.
  • Die Spieler der Mannschaft C machen 33,33 % aller Spieler mit einer F-Position aus.

Und so weiter.

Hinweis : Die vollständige Dokumentation der Funktion pandas crosstab() finden Sie hier .

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie andere häufige Aufgaben in Pandas ausgeführt werden:

Pandas: So verwenden Sie GroupBy und Wertzählungen
Pandas: So verwenden Sie GroupBy mit Bin-Anzahl
Pandas: So zählen Sie Werte in einer Spalte mit Bedingung

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert