Pandas: cara mengelompokkan dan menggabungkan beberapa kolom
Seringkali Anda mungkin ingin mengelompokkan dan menggabungkan beberapa kolom DataFrame pandas.
Untungnya, hal ini mudah dilakukan menggunakan fungsi panda .groupby() dan .agg() .
Tutorial ini menjelaskan beberapa contoh penggunaan praktis fungsi-fungsi ini.
Contoh 1: Kelompokkan berdasarkan dua kolom dan temukan rata-ratanya
Misalkan kita memiliki panda DataFrame berikut:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]}) #view DataFrame print (df) team position assists rebounds 0 AG 5 11 1 BG 7 8 2 BF 7 10 3 BG 8 6 4 BF 5 6 5 MF 7 9 6 MC 6 6 7 MC 9 10
Kode berikut menunjukkan cara mengelompokkan berdasarkan kolom “tim” dan “posisi” dan menemukan rata-rata operan:
df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () team position assists mean 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
Outputnya memberitahu kita:
- Rata-rata assist pemain di posisi G tim A adalah 5,0 .
- Rata-rata assist pemain posisi F di tim B adalah 6,0 .
- Rata-rata assist pemain posisi G tim B adalah 7,5 .
Dan seterusnya.
Kita juga dapat menggunakan kode berikut untuk mengganti nama kolom DataFrame yang dihasilkan:
#group by team and position and find mean assists new = df. groupby (['team', 'position']). agg ({'assists': ['mean']}). reset_index () #rename columns new.columns = ['team', 'pos', 'mean_assists'] #view DataFrame print (new) team pos mean_assists 0 A G 5.0 1 B F 6.0 2 B G 7.5 3 M C 7.5 4M F 7.0
Contoh 2: Kelompokkan berdasarkan dua kolom dan temukan beberapa statistik
Anggaplah kita menggunakan pandas DataFrame yang sama seperti contoh sebelumnya:
import pandas as pd #createDataFrame df = pd.DataFrame({'team': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'], 'position': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'], 'assists': [5, 7, 7, 8, 5, 7, 6, 9], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10]})
Kode berikut menunjukkan cara mencari median dan jumlah rebound maksimum, yang dikelompokkan dalam kolom “tim” dan “posisi”:
df. groupby (['team', 'position']). agg ({'rebounds': ['median', 'max']}). reset_index () team position rebounds median max 0 A G 11 11 1 B F 8 10 2 B G 7 8 3 M C 8 10 4 M F 9 9
Outputnya memberitahu kita:
- Median rebound untuk pemain posisi G di Tim A adalah 11 .
- Rebound maksimal pemain posisi G tim A adalah 11 .
- Median rebound pemain di posisi F tim B adalah 8 .
- Rebound maksimal pemain posisi F tim B adalah 10 .
Dan seterusnya.
Sumber daya tambahan
Cara memfilter Pandas DataFrame pada berbagai kondisi
Cara menghitung nilai yang hilang di Pandas DataFrame
Cara menumpuk beberapa Pandas DataFrames