Pandas: cara mengelompokkan dua kolom dan agregat
Anda dapat menggunakan sintaks dasar berikut dengan fungsi groupby() di panda untuk mengelompokkan berdasarkan dua kolom dan menggabungkan kolom lainnya:
df. groupby ([' var1 ',' var2 '])[' var3 ']. mean ()
Contoh khusus ini mengelompokkan DataFrame berdasarkan kolom var1 dan var2 , lalu menghitung rata-rata kolom var3 .
Contoh berikut menunjukkan cara mengelompokkan pada dua kolom dan mengagregasi menggunakan pandas DataFrame berikut:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'F', 'G', 'G', 'G', 'G', 'F'], ' points ': [15, 22, 24, 25, 20, 35, 34, 19, 14, 12]}) #view DataFrame print (df) team position points 0 AG 15 1 AG 22 2 AF 24 3 AF 25 4 AF 20 5 BG 35 6 BG 34 7 BG 19 8 BG 14 9 BF 12
Contoh 1: Kelompokkan dua kolom dan hitung rata-rata kolom lainnya
Kita dapat menggunakan sintaks berikut untuk menghitung nilai rata-rata kolom poin , yang dikelompokkan berdasarkan kolom tim dan posisi :
#calculate mean of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. mean ()
team position
AF23.0
G 18.5
BF 12.0
G 25.5
Name: points, dtype: float64
Dari hasilnya kita dapat melihat:
- Nilai rata-rata poin pemain tim A di posisi F adalah 23 .
- Nilai rata-rata poin pemain tim A di posisi G adalah 18,5 .
Dan seterusnya.
Contoh 2: Kelompokkan dua kolom dan hitung maksimum kolom lainnya
Kita dapat menggunakan sintaks berikut untuk menghitung nilai maksimum kolom poin , yang dikelompokkan berdasarkan kolom tim dan posisi :
#calculate max of points grouped by team and position columns
df. groupby ([' team ', ' position '])[' points ']. max ()
team position
AF25
G22
BF 12
G 35
Name: points, dtype: int64
Dari hasilnya kita dapat melihat:
- Nilai poin maksimal pemain tim A di posisi F adalah 25 .
- Nilai poin maksimal pemain tim A di posisi G adalah 22 .
Dan seterusnya.
Contoh 3: Kelompokkan berdasarkan dua kolom dan hitung kemunculannya
Kita dapat menggunakan sintaks berikut untuk menghitung kemunculan setiap kombinasi kolom tim dan posisi :
#count occurrences of each combination of team and position columns
df. groupby ([' team ', ' position ']). size ()
team position
AF3
G2
BF 1
G4
dtype: int64
Dari hasilnya kita dapat melihat:
- Ada 3 pemain di tim A di posisi F.
- Ada 2 pemain di tim A di posisi G.
Dan seterusnya.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di panda:
Cara menghitung nilai unik menggunakan Pandas GroupBy
Cara menerapkan fungsi ke Pandas Groupby
Cara Membuat Plot Batang dari Pandas GroupBy