Pengelompokan dan Agregasi Data
Table of Contents
Pandas Dasar-dasar Manipulasi Data - This article is part of a series.
Dalam analisis data, pengelompokan dan agregasi data memainkan peran penting dalam memahami dan merangkum informasi yang terkandung dalam dataset. Pandas menyediakan alat yang kuat untuk melakukan operasi ini dengan mudah, memungkinkan analis untuk mendapatkan wawasan yang lebih dalam. Mari jelajahi beberapa aspek kunci pengelompokan dan agregasi data.
A. Pengelompokan Data #
Pengelompokan data adalah langkah awal dalam proses agregasi. Dengan mengelompokkan data berdasarkan nilai tertentu dalam suatu kolom, kita dapat membentuk kelompok data yang memiliki karakteristik serupa. Hal ini berguna untuk pemahaman dan analisis lebih lanjut terhadap setiap kelompok.
Format Penggunaan:
df.groupby('Nama_Kolom')
Penjelasan: Pengelompokan data memungkinkan kita untuk membagi dataset menjadi kelompok berdasarkan nilai unik dalam suatu kolom. Proses ini membentuk objek DataFrameGroupBy yang dapat digunakan untuk melakukan berbagai operasi agregasi.
Contoh Penggunaan:
grouped_by_jurusan = df.groupby('Jurusan')
print(grouped_by_jurusan.groups)
Hasil Print:
{'Akuntansi': [2, 7, 8], 'Farmasi': [9], 'Ilmu Hukum': [5], 'Ilmu Komunikasi': [3], 'Kedokteran': [4], 'Manajemen Bisnis': [1], 'Teknik Elektro': [6], 'Teknik Informatika': [0], 'Teknik Sipil': [10]}
B. Agregasi Data dengan Fungsi Statistik #
Setelah data dikelompokkan, langkah selanjutnya adalah melakukan agregasi dengan menggunakan berbagai fungsi statistik seperti mean, sum, max, min, dll. Agregasi ini memberikan gambaran statistik ringkas dari setiap kelompok, memudahkan dalam mengidentifikasi tren dan pola data.
Format Penggunaan:
df.groupby('Nama_Kolom').agg({'Kolom_Agregasi': ['fungsi_statistik1', 'fungsi_statistik2']})
Penjelasan:
Agregasi data melibatkan penghitungan statistik seperti mean, median, sum, min, max, dll., untuk setiap kelompok dalam dataset. Dengan menggunakan format ini, kita dapat menggabungkan berbagai fungsi statistik dalam satu operasi.
Contoh Penggunaan:
aggregated_by_jurusan = df.groupby('Jurusan').agg({'Usia': ['mean', 'max']})
print(aggregated_by_jurusan)
Hasil Print:
Usia
mean max
Jurusan
Akuntansi 22.666667 24
Farmasi 22.000000 22
Ilmu Hukum 20.000000 20
Ilmu Komunikasi 23.000000 23
Kedokteran 25.000000 25
Manajemen Bisnis 22.000000 22
Teknik Elektro 22.000000 22
Teknik Informatika 20.000000 20
Teknik Sipil 21.000000 21
C. Penggunaan Fungsi Khusus pada Agregasi #
Terkadang, fungsi statistik bawaan tidak mencukupi. Dalam situasi ini, kita dapat menggunakan fungsi khusus yang sesuai dengan kebutuhan analisis. Hal ini memberikan fleksibilitas yang lebih besar dalam menentukan cara kita mengagregasi data.
Format Penggunaan:
df.groupby('Nama_Kolom').agg({'Kolom_Agregasi': lambda x: fungsi_khusus(x)})
Penjelasan: Ketika fungsi statistik bawaan tidak mencukupi, kita dapat menggunakan fungsi khusus dengan format ini. Fungsi khusus ini dapat mencakup logika yang lebih kompleks atau fungsi buatan sendiri.
Contoh Penggunaan:
def range_age(x):
return x.max() - x.min()
custom_aggregated_by_jurusan = df.groupby('Jurusan').agg({'Usia': range_age})
print(custom_aggregated_by_jurusan)
Hasil Print:
Usia
Jurusan
Akuntansi 3
Farmasi 0
Ilmu Hukum 0
Ilmu Komunikasi 0
Kedokteran 0
Manajemen Bisnis 0
Teknik Elektro 0
Teknik Informatika 0
Teknik Sipil 0
D. Pengelompokan Berdasarkan Multiple Kolom #
Pengelompokan tidak terbatas pada satu kolom saja. Dengan mengelompokkan data berdasarkan beberapa kolom, kita dapat memperoleh kelompok yang lebih spesifik dan kompleks, memungkinkan analisis yang lebih terperinci.
Format Penggunaan:
df.groupby(['Nama_Kolom1', 'Nama_Kolom2'])
Penjelasan: Ketika pengelompokan berdasarkan satu kolom tidak mencukupi, kita dapat melakukan pengelompokan berdasarkan multiple kolom. Ini membentuk kelompok yang lebih spesifik untuk analisis yang lebih terperinci.
Contoh Penggunaan:
grouped_by_jurusan_gender = df.groupby(['Jurusan', 'Jenis_Kelamin'])
print(grouped_by_jurusan_gender.groups)
Hasil Print:
{('Akuntansi', 'Perempuan'): [2, 7], ('Farmasi', 'Laki-laki'): [9], ('Ilmu Hukum', 'Laki-laki'): [5], ('Ilmu Komunikasi', 'Perempuan'): [3], ('Kedokteran', 'Perempuan'): [4], ('Manajemen Bisnis', 'Laki-laki'): [1], ('Teknik Elektro', 'Perempuan'): [6], ('Teknik Informatika', 'Laki-laki'): [0], ('Teknik Sipil', 'Laki-laki'): [10]}
E. Pivot Tabel #
Pivot tabel adalah alat yang kuat untuk merangkum data dalam format yang lebih terstruktur. Dengan menyusun data ke dalam baris dan kolom yang sesuai, kita dapat dengan mudah membaca dan memahami pola data secara lebih intuitif.
Format Penggunaan:
pd.pivot_table(df, values='Kolom_Agregasi', index='Nama_Kolom1', columns='Nama_Kolom2', aggfunc='fungsi_statistik')
Penjelasan:
Pivot tabel memungkinkan kita untuk merangkum dan memformat data menjadi bentuk tabel dinamis yang memudahkan analisis. Dengan menyediakan nilai, indeks, kolom, dan fungsi agregasi, kita dapat membentuk tabel yang relevan.
Contoh Penggunaan:
python Copy code pivot_by_jurusan_gender = pd.pivot_table(df, values=‘Usia’, index=‘Jurusan’, columns=‘Jenis_Kelamin’, aggfunc=‘mean’) print(pivot_by_jurusan_gender) Hasil Print:
Jenis_Kelamin Laki-laki Perempuan
Jurusan
Akuntansi NaN 22.666667
Farmasi 22.000000 NaN
Ilmu Hukum 20.000000 NaN
Ilmu Komunikasi NaN 23.000000
Kedokteran NaN 25.000000
Manajemen Bisnis 22.000000 NaN
Teknik Elektro NaN 22.000000
Teknik Informatika 20.000000 NaN
Teknik Sipil 21.000000 NaN
F. Pengurutan Hasil Agregasi #
Setelah data diagregasi, seringkali kita perlu mengurutkan hasilnya untuk menemukan kelompok yang paling signifikan. Pengurutan ini memudahkan dalam mengidentifikasi pola dan tren yang paling relevan dalam dataset.
Format Penggunaan:
df.groupby('Nama_Kolom').agg({'Kolom_Agregasi': 'fungsi_statistik'}).sort_values(by=('Kolom_Agregasi', 'fungsi_statistik'), ascending=True/False)
Penjelasan:
Setelah melakukan agregasi, seringkali kita perlu mengurutkan hasil untuk memahami kelompok yang paling signifikan. Dengan menggunakan fungsi sort_values, kita dapat mengurutkan hasil berdasarkan kolom agregasi tertentu.
Contoh Penggunaan:
sorted_aggregated_by_jurusan = df.groupby('Jurusan').agg({'Usia': 'mean'}).sort_values(by=('Usia', 'mean'), ascending=False)
print(sorted_aggregated_by_jurusan)
Hasil Print:
Usia
Jurusan
Kedokteran 25.000000
Akuntansi 22.666667
Ilmu Komunikasi 23.000000
Manajemen Bisnis 22.000000
Teknik Elektro 22.000000
Farmasi 22.000000
Teknik Sipil 21.000000
Ilmu Hukum 20.000000
Teknik Informatika 20.000000