Pandy: jak utworzyć tabelę przestawną z wartościami procentowymi


Możesz użyć argumentu normalize w funkcji crosstab() pandy, aby utworzyć tabelę przestawną wyświetlającą wartości procentowe zamiast liczb:

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

Argument normalizacji przyjmuje trzy różne argumenty:

  • all : Pokaż procent w stosunku do wszystkich wartości.
  • indeks : Pokaż procent jako sumę wartości wierszy.
  • Kolumny : wyświetla procent jako sumę wartości kolumn.

Poniższe przykłady pokazują, jak w praktyce używać każdej z tych metod z następującą ramką DataFrame pand:

 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

Oto jak wyglądałaby domyślna tabela przestawna z liczbą graczy na drużynę i pozycję:

 #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

Przykład 1: Utwórz tabelę przestawną zawierającą wartości procentowe względem wszystkich wartości

Możemy użyć funkcji crosstab() z argumentem normalize=all, aby utworzyć tabelę przestawną wyświetlającą procenty każdej wartości w stosunku do całkowitej liczby wszystkich wartości:

 #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

Oto jak zinterpretować wynik:

  • Gracze Drużyny A na pozycji F reprezentują 9,09% wszystkich graczy.
  • Zawodnicy Drużyny A na pozycji G stanowią 18,18% wszystkich graczy.

I tak dalej.

Przykład 2: Utwórz tabelę przestawną zawierającą wartości procentowe względem sum wierszy

Możemy użyć funkcji crosstab() z argumentem normalize=index , aby utworzyć tabelę przestawną wyświetlającą procenty każdej wartości w stosunku do sumy wierszy:

 #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

Oto jak zinterpretować wynik:

  • Zawodnicy na pozycji F stanowią 33,33% wszystkich zawodników drużyny A.
  • Gracze na pozycji F reprezentują 75% wszystkich graczy drużyny B.
  • Gracze na pozycji F reprezentują 50% wszystkich graczy drużyny C.

I tak dalej.

Przykład 3: Utwórz tabelę przestawną zawierającą wartości procentowe względem sum kolumn

Możemy użyć funkcji crosstab() z argumentem normalize=columns , aby utworzyć tabelę przestawną wyświetlającą procenty każdej wartości w stosunku do sumy kolumny:

 #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

Oto jak zinterpretować wynik:

  • Zawodnicy drużyny A stanowią 16,67% wszystkich graczy z pozycją F.
  • Gracze Drużyny B stanowią 50% wszystkich graczy z pozycją F.
  • Gracze Drużyny C stanowią 33,33% wszystkich graczy z pozycją F.

I tak dalej.

Uwaga : pełną dokumentację funkcji crosstab() pandy można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w pandach:

Pandy: Jak korzystać z GroupBy i liczenia wartości
Pandy: Jak korzystać z GroupBy z liczbą pojemników
Pandy: Jak liczyć wartości w kolumnie z warunkiem

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *