Penjelasan sederhana
Kalau groupby().sum() hanya memberi satu angka per kelompok, agg() bisa memberi beberapa angka sekaligus, masing-masing dengan nama kolom yang jelas.
Sintaks
df.groupby('kolom').agg(
nama_hasil=('kolom_nilai', 'fungsi'),
)
| Bagian | Keterangan |
|---|---|
nama_hasil | Nama kolom di tabel hasil. |
('kolom_nilai', 'fungsi') | Kolom yang diringkas dan fungsinya: 'sum', 'mean', 'count', 'max', 'min', 'nunique'. |
df adalah nama DataFrame (tabel) yang sedang diolah. Contoh di bawah memakai import pandas as pd dan import numpy as np, yang sudah disiapkan otomatis.
Contoh agg()
Data contoh: karyawan (sudah tersedia sebagai DataFrame)
DataFrame karyawan
| id | nama | dept_id | kota | gaji | tgl_masuk | atasan_id |
|---|---|---|---|---|---|---|
| 1 | Andi Pratama | 3 | Bandung | 12500000 | 2019-03-11 | NaN |
| 2 | Bunga Lestari | 1 | Jakarta | 9800000 | 2020-07-01 | NaN |
| 3 | Candra Wijaya | 3 | Bandung | 8200000 | 2021-02-15 | 1 |
| 4 | Dewi Anggraini | 2 | Jakarta | 7500000 | 2022-05-09 | 6 |
| 5 | Eko Saputra | 1 | Jakarta | 6900000 | 2023-01-16 | 2 |
| 6 | Fajar Nugroho | 2 | Surabaya | 11000000 | 2018-09-03 | NaN |
| 7 | Gita Permata | 3 | Jakarta | 8200000 | 2023-08-21 | 1 |
| 8 | Hendra Gunawan | NaN | Medan | 5500000 | 2024-04-02 | NaN |
karyawan.groupby('kota').agg(
jumlah=('id', 'count'),
rata_gaji=('gaji', 'mean'),
gaji_max=('gaji', 'max'),
).sort_values('jumlah', ascending=False)
Hasil 4 baris × 3 kolom
| kota | jumlah | rata_gaji | gaji_max |
|---|---|---|---|
| Jakarta | 4 | 8100000 | 9800000 |
| Bandung | 2 | 10350000 | 12500000 |
| Medan | 1 | 5500000 | 5500000 |
| Surabaya | 1 | 11000000 | 11000000 |
Satu tabel berisi jumlah karyawan, rata-rata gaji, dan gaji tertinggi di setiap kota.
Cara kerjanya, langkah demi langkah
groupby('kota')mengelompokkan karyawan per kota.agg()menghitung count id, mean gaji, dan max gaji untuk tiap kota.- Hasil diurutkan dari kota dengan karyawan terbanyak.
Dipakai untuk apa di kantor?
- Tabel ringkasan laporan bulanan: jumlah transaksi, total, rata-rata.
- Membandingkan cabang dengan beberapa metrik sekaligus.
Kesalahan yang sering terjadi
- Menulis fungsi tanpa kutip, misalnya
('gaji', mean). Fungsi bawaan ditulis sebagai teks. - Memakai 'count' pada kolom yang ada NaN; nilai kosong tidak ikut dihitung. Pakai 'size' untuk jumlah baris.
pivot_table()