Pandas groupby: Agregasi Data ala Pivot di Python (2026)
TL;DR
Method groupby di pandas ngelompokin baris DataFrame berdasarkan nilai satu kolom atau lebih, lalu ngitung agregasi per grup kayak sum, mean, atau count. Pola dasarnya df.groupby('kolom')['angka'].sum(). Cara kerjanya split, apply, combine, dan hasilnya mirip pivot table tapi lewat kode.
Method groupby di pandas ngelompokin baris berdasarkan nilai satu kolom, lalu ngitung ringkasan per grup kayak total atau rata-rata. Ini padanan pivot table, tapi lewat kode.
Tiap kali kamu pengin jawab pertanyaan 'total penjualan per kota berapa' atau 'rata-rata order per pelanggan gimana', groupby yang ngerjain.
Di artikel ini kamu bakal ngerti cara kerjanya, cara ngitung beberapa agregasi sekaligus, contoh nyata pakai data toko, plus kesalahan yang bikin hasilnya keliatan aneh.
Apa itu groupby di pandas?
groupby adalah method DataFrame yang misahin data jadi grup berdasarkan nilai kolom, lalu nerapin fungsi hitung ke tiap grup. Cara kerjanya tiga tahap: split (pisah data per grup), apply (hitung agregasi tiap grup), combine (gabung hasilnya jadi satu tabel).
Kamu nggak perlu ngurus tiga tahap itu manual. pandas ngejalanin semuanya begitu kamu nulis satu baris groupby.
Gimana cara pakai groupby?
Pola dasarnya: pilih kolom pengelompok, pilih kolom angka, terus panggil fungsi agregasi. Anggap kamu punya DataFrame df dengan kolom kota dan nominal.
import pandas as pd
hasil = df.groupby('kota')['nominal'].sum()
print(hasil)
Baris itu ngelompokin data per kota, terus jumlahin nominal tiap kota. Hasilnya satu angka total per kota. Kalau kamu ganti sum jadi mean, kamu dapet rata-rata. Ganti jadi count, kamu dapet jumlah baris per kota.
Satu hal yang sering bikin bingung pemula: kolom kota berubah jadi index di hasil. Buat balikin jadi kolom biasa, tambahin reset_index.
hasil = df.groupby('kota')['nominal'].sum().reset_index()
Gimana cara pakai beberapa agregasi sekaligus?
Sering kali satu ringkasan nggak cukup. Kamu mau total, rata-rata, dan jumlah transaksi dalam satu tabel. Pakai method agg dan kasih daftar fungsi.
hasil = df.groupby('kota')['nominal'].agg(['sum', 'mean', 'count'])
Hasilnya tiga kolom sekaligus per kota: total, rata-rata, dan banyaknya baris. Biar nama kolomnya langsung jelas, kamu bisa kasih nama sendiri.
hasil = df.groupby('kota').agg(
total_omzet=('nominal', 'sum'),
rata_order=('nominal', 'mean'),
jumlah_transaksi=('nominal', 'count')
).reset_index()
Cara ini disebut named aggregation. Hasil kolomnya jadi total_omzet, rata_order, dan jumlah_transaksi, bukan nama fungsi mentah yang bikin orang lain nebak-nebak.
Groupby lebih dari satu kolom
Kamu bisa ngelompokin berdasarkan beberapa kolom sekaligus. Tinggal kasih daftar kolom di dalam groupby.
hasil = df.groupby(['kota', 'kategori'])['nominal'].sum().reset_index()
Sekarang tiap baris hasil adalah satu kombinasi kota dan kategori. Cocok kalau kamu mau ringkasan yang lebih rinci, misalnya total penjualan per kota per kategori produk.
Contoh kasus: ringkasan penjualan toko_berkah
Anggap kamu ngolah data transaksi toko_berkah, UMKM sembako yang punya cabang di Bandung, Cimahi, dan Garut. Ada 4.100 baris transaksi dengan kolom cabang, kategori, dan nominal.
Pemiliknya mau tahu performa tiap cabang.
ringkasan = df.groupby('cabang').agg(
total_omzet=('nominal', 'sum'),
rata_transaksi=('nominal', 'mean')
).reset_index()
Dari sampel data ngulikdata, cabang Bandung nyumbang Rp 96.200.000 dengan rata-rata Rp 42.000 per transaksi, sementara Garut cuma Rp 21.300.000 tapi rata-ratanya lebih tinggi di Rp 58.000. Artinya Garut transaksinya lebih sedikit tapi nilainya lebih gede per belanja.
Pola kayak gini susah ketangkep kalau cuma lihat total. Begitu dipecah pakai groupby, arah strateginya jadi lebih jelas: Garut cocok buat produk bernilai tinggi. Buat ngeekspor hasil ini ke Excel, lanjut ke pandas to_excel.
Kesalahan umum pakai groupby
Lupa reset_index. Tanpa reset_index, kolom pengelompok jadi index dan hasilnya susah diolah lagi atau diekspor. Biasakan tambahin di ujung, atau pakai as_index=False.
Nggak milih kolom angka. Kalau kamu panggil sum ke seluruh DataFrame tanpa milih kolom, pandas ngabaikan kolom teks dan kadang hasilnya nggak sesuai harapan. Pilih kolom angka secara eksplisit biar terkontrol.
Nyampur groupby sama pivot_table tanpa sadar bedanya. Kalau kamu butuh tabel silang dua dimensi, pivot_table lebih pas. Detail lengkap method groupby ada di dokumentasi resmi pandas.
FAQ
Pertanyaan yang sering muncul soal groupby di pandas.
Penutup
groupby intinya split, apply, combine: pisah data per grup, hitung agregasinya, gabung jadi tabel. Buat ringkasan yang lebih dari satu angka, pakai agg dengan named aggregation biar hasil kolomnya langsung kebaca maksudnya.
Mau bentuk tabel silang ala pivot Excel? Cek pandas pivot_table. Udah selesai ngeringkas dan mau kirim hasilnya? Baca pandas to_excel.
Pengin lancar olah data dari mentah sampai insight siap presentasi? Kulik studi kasus data Indonesia di NgulikData biar kamu terbiasa sama alur kerja analis beneran.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
NumPy reshape: Ubah Bentuk Array (2026)
Fungsi reshape di NumPy ngatur ulang bentuk array tanpa ngubah datanya. Ini cara pakainya, arti angka -1, dan cara ngeflat array.
NumPy Array: Dasar-Dasar untuk Analis Data (2026)
NumPy array bikin hitungan data di Python jauh lebih cepat dari list biasa. Ini dasar bikin, slicing, dan operasi array buat analis.
Alternatif iterrows yang Lebih Cepat di Pandas
iterrows nyaman ditulis tapi lambat. Ini urutan alternatif iterrows di pandas dari yang tercepat, plus benchmark biar kamu tau kapan pakai yang mana.