Pandas: cara membuat tab silang dengan persentase
Anda dapat menggunakan argumen normalisasi dalam fungsi pandas crosstab() untuk membuat tab silang yang menampilkan nilai persentase, bukan angka:
p.d. crosstab (df. col1 , df. col2 , normalize=' index ')
Argumen normalisasi menerima tiga argumen berbeda:
- all : Menampilkan persentase relatif terhadap semua nilai.
- indeks : Menampilkan persentase sebagai total nilai baris.
- Kolom : Menampilkan persentase sebagai total nilai kolom.
Contoh berikut menunjukkan cara menggunakan masing-masing metode ini dalam praktik dengan pandas DataFrame berikut:
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
Berikut tampilan tab silang default untuk jumlah pemain per tim dan posisi:
#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
Contoh 1: Buat tab silang dengan persentase relatif terhadap semua nilai
Kita dapat menggunakan fungsi crosstab() dengan argumen normalize=all untuk membuat tab silang yang menampilkan persentase setiap nilai relatif terhadap jumlah total semua nilai:
#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
Berikut cara menafsirkan hasilnya:
- Pemain tim A di posisi F mewakili 9,09% dari total pemain.
- Pemain Tim A di posisi G mewakili 18,18% dari total pemain.
Dan seterusnya.
Contoh 2: Buat tab silang dengan persentase terhadap total baris
Kita dapat menggunakan fungsi crosstab() dengan argumen normalize=index untuk membuat tab silang yang menampilkan persentase setiap nilai relatif terhadap total baris:
#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
Berikut cara menafsirkan hasilnya:
- Pemain di posisi F mewakili 33,33% dari total pemain tim A.
- Pemain di posisi F mewakili 75% dari total pemain di tim B.
- Pemain di posisi F mewakili 50% dari total pemain di tim C.
Dan seterusnya.
Contoh 3: Buat tab silang dengan persentase terhadap total kolom
Kita dapat menggunakan fungsi crosstab() dengan argumen normalize=columns untuk membuat tab silang yang menampilkan persentase setiap nilai relatif terhadap total kolom:
#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
Berikut cara menafsirkan hasilnya:
- Pemain tim A mewakili 16,67% dari total pemain dengan posisi F.
- Pemain tim B mewakili 50% dari total pemain dengan posisi F.
- Pemain tim C mewakili 33,33% dari total pemain dengan posisi F.
Dan seterusnya.
Catatan : Anda dapat menemukan dokumentasi lengkap fungsi pandas crosstab() di sini .
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:
Pandas: Cara menggunakan GroupBy dan penghitungan nilai
Pandas: Cara menggunakan GroupBy dengan jumlah bin
Pandas : Cara menghitung nilai pada kolom dengan syarat