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