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

Tambahkan komentar

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