0Pricing
Pandas & NumPy Academy · Pelajaran

Pola Pisahkan-Terapkan-Gabungkan

Pahami alur konseptual groupby: memisahkan DataFrame menjadi beberapa grup, menerapkan fungsi, lalu menggabungkan hasilnya.

Pola Pisahkan-Terapkan-Gabungkan adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa Itu GroupBy?

Operasi GroupBy adalah salah satu pola paling andal dalam analisis data. Operasi ini memungkinkan Anda membagi DataFrame menjadi beberapa kelompok, menerapkan fungsi pada setiap kelompok secara terpisah, lalu menggabungkan hasilnya menjadi struktur baru. Alur kerja ini dikenal sebagai pola pemisahan-penerapan-penggabungan, istilah yang dicetuskan oleh ahli statistik Hadley Wickham.

Langkah Pemisahan

Pada langkah pemisahan, Pandas membagi DataFrame menjadi beberapa sub-DataFrame berdasarkan nilai unik dalam satu kolom atau lebih. Misalnya, jika data Anda memiliki kolom region dengan nilai seperti 'North', 'South', dan 'West', langkah pemisahan akan membuat tiga kelompok terpisah. Belum ada data yang dipindahkan atau disalin — Pandas hanya mencatat baris mana yang termasuk dalam setiap kelompok.

import pandas as pd

df = pd.DataFrame({
    'region': ['North', 'South', 'North', 'West', 'South'],
    'sales': [200, 150, 300, 180, 220]
})

# split: create a GroupBy object
grouped = df.groupby('region')
print(type(grouped))  # DataFrameGroupBy

Langkah Penerapan

Pada langkah penerapan, sebuah fungsi diterapkan pada setiap kelompok secara terpisah. Fungsinya dapat berupa agregasi bawaan seperti sum() atau mean(), maupun fungsi khusus yang Anda tentukan sendiri. Baris dalam setiap kelompok diteruskan ke fungsi tersebut, yang kemudian mengembalikan skalar, Series, atau DataFrame sebagai hasilnya.

# apply: compute the sum of 'sales' within each region group
total_sales = grouped['sales'].sum()
print(total_sales)
# region
# North    500
# South    370
# West     180
# Name: sales, dtype: int64

Langkah Penggabungan

Pada langkah penggabungan, Pandas secara otomatis menyusun kembali hasil setiap kelompok menjadi satu objek — biasanya Series atau DataFrame. Kunci kelompok menjadi indeks hasilnya. Langkah ini berlangsung secara otomatis ketika Anda memanggil metode agregasi pada objek GroupBy, sehingga menghasilkan tabel ringkasan yang rapi dengan satu baris untuk setiap kelompok.

# combine happens automatically — result is a Series indexed by 'region'
print(total_sales.index)   # Index(['North', 'South', 'West'])
print(total_sales.values)  # [500, 370, 180]

Membuat Objek GroupBy

Anda membuat objek GroupBy dengan memanggil df.groupby(column). Tidak ada perhitungan yang dilakukan pada tahap ini — objek ini bersifat malas. Anda dapat melakukan iterasi terhadapnya untuk melihat kelompok, atau merangkaikan metode agregasi untuk memulai perhitungan. Meneruskan as_index=False akan mempertahankan kolom pengelompokan sebagai kolom biasa, bukan sebagai indeks pada hasil.

grouped = df.groupby('region', as_index=False)
result = grouped['sales'].sum()
print(result)
#   region  sales
# 0  North    500
# 1  South    370
# 2   West    180

Melakukan Iterasi pada Kelompok

Anda dapat melakukan iterasi terhadap objek GroupBy untuk memeriksa setiap kelompok secara terpisah. Setiap iterasi menghasilkan tuple (group_key, sub_dataframe). Hal ini berguna untuk menelusuri masalah atau ketika Anda ingin memproses setiap kelompok dengan kode Python bebas. Namun, untuk performa di lingkungan produksi, sebaiknya gunakan metode agregasi tervectorisasi daripada iterasi eksplisit.

for name, group in df.groupby('region'):
    print(f'--- {name} ---')
    print(group)
# --- North ---
#   region  sales
# 0  North    200
# 2  North    300
# --- South ---
#   region  sales
# 1  South    150
# 4  South    220

Fungsi Agregasi Umum

Pandas GroupBy mendukung banyak fungsi agregasi bawaan: sum(), mean(), count(), min(), max(), std(), median(), dan lainnya. Fungsi-fungsi ini sangat dioptimalkan dan berjalan pada semua kelompok dalam satu lintasan. Selalu utamakan fungsi tersebut daripada menulis fungsi Python khusus jika fungsi bawaan yang sesuai sudah tersedia.

print(df.groupby('region')['sales'].mean())
# region
# North    250.0
# South    185.0
# West     180.0

print(df.groupby('region')['sales'].count())
# region
# North    2
# South    2
# West     1

Mengelompokkan Beberapa Kolom Sekaligus

Anda dapat menerapkan agregasi pada beberapa kolom secara bersamaan dengan memilih kolom-kolom tersebut sebelum memanggil metode agregasi, atau dengan tidak memilih kolom agar semua kolom numerik diagregasi. Hasilnya berupa DataFrame, bukan Series, dengan satu kolom untuk setiap variabel yang diagregasi.

df2 = pd.DataFrame({
    'region': ['North', 'South', 'North', 'South'],
    'units': [10, 8, 12, 9],
    'revenue': [200, 160, 240, 180]
})

print(df2.groupby('region').sum())
#         units  revenue
# region
# North      22      440
# South      17      340

Model Mental GroupBy

Anggap GroupBy seperti klausa GROUP BY dalam SQL. Kode Pandas df.groupby('region')['sales'].sum() setara dengan SELECT region, SUM(sales) FROM df GROUP BY region dalam SQL. Memahami kesamaan ini membantu Anda menerjemahkan antara kedua alat tersebut dan memilih abstraksi yang tepat untuk alur pemrosesan Anda.

# Pandas GroupBy is equivalent to SQL GROUP BY
# SQL:    SELECT region, SUM(sales) FROM df GROUP BY region
# Pandas: df.groupby('region')['sales'].sum()

result = df.groupby('region')['sales'].sum().reset_index()
result.columns = ['region', 'total_sales']
print(result)

Mengapa Tidak Menggunakan Perulangan Saja?

Anda mungkin bertanya-tanya, mengapa tidak melakukan perulangan pada nilai unik lalu menghitung statistik secara manual? Jawabannya adalah performa dan keterbacaan. Perulangan Python pada kelompok jauh lebih lambat daripada satu pemanggilan groupby tervectorisasi, terutama untuk kumpulan data besar. Operasi GroupBy berjalan secara internal dalam kode C yang telah dikompilasi, sehingga 10–100 kali lebih cepat daripada perulangan Python yang setara.

# Slow approach with a loop
results = {}
for region in df['region'].unique():
    subset = df[df['region'] == region]
    results[region] = subset['sales'].sum()

# Fast approach with GroupBy
results_fast = df.groupby('region')['sales'].sum().to_dict()
# Both give the same answer, but GroupBy is orders of magnitude faster

GroupBy dengan Beberapa Kunci Kelompok

Jika Anda memerlukan tingkat perincian yang lebih tinggi, lakukan pengelompokan berdasarkan beberapa kolom dengan meneruskan daftar ke groupby(). Hasilnya memiliki MultiIndex, dengan setiap tingkat sesuai dengan satu kolom pengelompokan. Misalnya, pengelompokan berdasarkan 'region' dan 'quarter' menghasilkan total untuk setiap kombinasi wilayah-kuartal.

df3 = pd.DataFrame({
    'region': ['North', 'North', 'South', 'South'],
    'quarter': ['Q1', 'Q2', 'Q1', 'Q2'],
    'sales': [200, 300, 150, 220]
})

print(df3.groupby(['region', 'quarter'])['sales'].sum())
# region  quarter
# North   Q1         200
#         Q2         300
# South   Q1         150
#         Q2         220

Pemeriksaan Singkat

Uji pemahaman Anda tentang pola pemisahan-penerapan-penggabungan dari pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini Anda mempelajari: pola pemisahan-penerapan-penggabungan yang mendasari semua operasi GroupBy, cara membuat objek GroupBy dengan df.groupby(), serta cara menerapkan agregasi bawaan seperti sum() dan mean() untuk mendapatkan satu hasil per kelompok. Selanjutnya, kita akan membahas pengelompokan berdasarkan satu dan beberapa kunci dengan lebih banyak metode agregasi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pola Pisahkan-Terapkan-Gabungkan” gratis?

Ya — teks lengkap “Pola Pisahkan-Terapkan-Gabungkan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pola Pisahkan-Terapkan-Gabungkan”?

Pahami alur konseptual groupby: memisahkan DataFrame menjadi beberapa grup, menerapkan fungsi, lalu menggabungkan hasilnya. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?

Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Pola Pisahkan-Terapkan-Gabungkan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pola Pisahkan-Terapkan-Gabungkan
  2. GroupBy dengan Satu dan Beberapa Kunci
  3. Metode agg()
  4. Transformasi dan Filter GroupBy
← Kembali ke Pandas & NumPy Academy