Penjelasan sederhana
Kalau kamu sering membuat PivotTable di Excel, ini versinya di Python: tentukan baris, kolom, nilai, dan cara meringkasnya.
Sintaks
df.pivot_table(index, columns, values, aggfunc='mean', fill_value=None)
| Bagian | Keterangan |
|---|---|
index | Kolom yang jadi baris. |
columns | Kolom yang jadi judul kolom. |
values | Kolom yang diringkas. |
aggfunc | Fungsi ringkasan: 'sum', 'mean', 'count'. Bawaannya mean. |
fill_value | Pengganti sel kosong, misalnya 0. |
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 pivot_table()
Data contoh: penjualan (sudah tersedia sebagai DataFrame)
DataFrame penjualan
| id | tanggal | karyawan_id | produk | kategori | qty | harga |
|---|---|---|---|---|---|---|
| 1 | 2026-01-05 | 4 | Laptop | Elektronik | 2 | 8500000 |
| 2 | 2026-01-12 | 6 | Printer | Elektronik | 1 | 2300000 |
| 3 | 2026-01-20 | 4 | Kursi Kantor | Furnitur | 5 | 1200000 |
| 4 | 2026-02-03 | 6 | Laptop | Elektronik | 1 | 8500000 |
| 5 | 2026-02-14 | 4 | Meja Kerja | Furnitur | 3 | 1750000 |
| 6 | 2026-02-25 | 5 | Kertas A4 | ATK | 20 | 55000 |
| 7 | 2026-03-02 | 6 | Kursi Kantor | Furnitur | 4 | 1200000 |
| 8 | 2026-03-10 | 4 | Printer | Elektronik | 2 | 2300000 |
| 9 | 2026-03-18 | 5 | Kertas A4 | ATK | 30 | 55000 |
| 10 | 2026-03-27 | 6 | Monitor | Elektronik | 3 | 1900000 |
penjualan['omzet'] = penjualan['qty'] * penjualan['harga']
penjualan['bulan'] = penjualan['tanggal'].str[:7]
penjualan.pivot_table(index='bulan', columns='kategori',
values='omzet', aggfunc='sum', fill_value=0)
Hasil 3 baris × 3 kolom
| bulan | ATK | Elektronik | Furnitur |
|---|---|---|---|
| 2026-01 | 0 | 19300000 | 6000000 |
| 2026-02 | 1100000 | 8500000 | 5250000 |
| 2026-03 | 1650000 | 10300000 | 4800000 |
Omzet per bulan (baris) dan per kategori (kolom). Sel 0 berarti tidak ada transaksi kategori itu di bulan tersebut.
Cara kerjanya, langkah demi langkah
- Kolom omzet dan bulan disiapkan dulu.
- Bulan jadi baris, kategori jadi kolom.
- Omzet dijumlah di setiap pertemuan bulan × kategori, sel kosong diisi 0.
Dipakai untuk apa di kantor?
- Rekap bulanan per kategori, cabang × produk, divisi × status.
- Menyiapkan data untuk grafik batang bertumpuk.
Kesalahan yang sering terjadi
- Lupa
aggfunc='sum', sehingga yang keluar rata-rata, bukan total. - Bingung dengan
pivot(): fungsi itu tidak meringkas dan error kalau ada kombinasi dobel.
merge()