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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *