Pandas: cara menggunakan aggfunc di fungsi crosstab()
Anda dapat menggunakan argumen aggfunc di fungsi pandas crosstab() untuk membuat tab silang yang menggabungkan nilai menggunakan metrik tertentu:
p.d. crosstab (index=df. col1 , columns=df. col2 , values=df. col3 , aggfunc=' count ')
Nilai default aggfunc adalah “count”, tetapi Anda dapat menentukan metode agregasi lain seperti rata-rata, median, jumlah, min, maks, dll.
Anda juga dapat menentukan beberapa metode agregasi dalam argumen aggfunc :
p.d. crosstab (index=df. col1 , columns=df. col2 , values=df. col3 , aggfunc=[' min ', ' max '])
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
Contoh 1: Buat tab silang dengan nilai di aggfunc
Kita dapat menggunakan fungsi crosstab() berikut dengan argumen aggfunc=’mean’ untuk membuat tab silang yang menampilkan poin nilai rata-rata untuk setiap posisi dan kombinasi tim:
#create crosstab that displays mean points value by team and position p.d. crosstab (index=df. team , columns=df. position , values=df. points , aggfunc=' mean ') position F G team A 24.0 23.5 B 24.0 39.0 C 20.5 18.5
Berikut cara menafsirkan hasilnya:
- Rata-rata poin pemain tim A di posisi F adalah 24 .
- Rata-rata poin pemain tim A di posisi G adalah 23,5 .
Dan seterusnya.
Kita juga dapat menggunakan metrik agregasi lain, seperti nilai maksimum:
#create crosstab that displays max points value by team and position p.d. crosstab (index=df. team , columns=df. position , values=df. points , aggfunc=' max ') position F G team At 24 25 B 34 39 C 22 20
Berikut cara menafsirkan hasilnya:
- Poin maksimal pemain tim A di posisi F adalah 24 .
- Poin maksimum untuk pemain tim A di posisi G adalah 25 .
Dan seterusnya.
Contoh 2: Buat tab silang dengan banyak nilai di aggfunc
Kita dapat menggunakan fungsi crosstab() dengan beberapa nilai dalam argumen aggfunc untuk menggabungkan nilai poin dengan beberapa metrik untuk setiap posisi dan kombinasi tim:
#create crosstab that displays min and max points by team and position p.d. crosstab (df. team , df. position , df. points , aggfunc=[' min ', ' max ']) min max position F G F G team A 24 22 24 25 B 18 39 34 39 C 19 17 22 20
Berikut cara menafsirkan hasilnya:
- Nilai poin minimal pemain tim A di posisi F adalah 24 .
- Nilai poin minimal pemain tim A di posisi G adalah 22 .
- Nilai poin maksimal pemain tim A di posisi F adalah 24 .
- Nilai poin maksimal pemain tim A di posisi G adalah 25 .
Dan seterusnya.
Catatan : Anda dapat menemukan dokumentasi lengkap fungsi pandas crosstab() di sini .
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas panda umum lainnya:
Pandas: Cara membuat tab silang dengan persentase
Pandas: Cara menggunakan GroupBy dan penghitungan nilai
Pandas: Cara menggunakan GroupBy dengan jumlah bin