Pandas transform: Hitung per Grup Tanpa Kehilangan Baris
Blog/Tips & Trik/Pandas transform: Hitung per Grup Tanpa Kehilangan Baris

Pandas transform: Hitung per Grup Tanpa Kehilangan Baris

BimaBima
·5 September 2026·8 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Method transform di pandas ngitung nilai per grup, tapi balikin hasilnya ke tiap baris asli, jadi jumlah barisnya tetap sama kayak DataFrame awal. Ini beda sama agg yang ngeciutin tiap grup jadi satu baris. transform cocok buat bikin kolom baru kayak persen dari total grup, atau ngisi nilai kosong pakai rata-rata grupnya.

Method transform di pandas ngitung nilai per grup, tapi balikin hasilnya ke tiap baris asli, jadi jumlah barisnya tetap sama kayak DataFrame awal.

Ini beda penting sama agg. agg ngeciutin tiap grup jadi satu baris ringkasan. transform nyebar hasil grup balik ke semua anggotanya. Jadi kamu bisa bikin kolom baru kayak persen tiap transaksi terhadap total kotanya, tanpa kehilangan satu baris pun.

Di artikel ini kamu bakal belajar cara kerjanya, beda sama agg, dan contoh nyata dari data penjualan UMKM.

Apa itu transform di pandas groupby?

transform ngejalanin fungsi agregasi per grup, lalu nyebarin hasilnya balik ke tiap baris di grup itu. Kalau satu kota punya total belanja 10 juta, tiap baris transaksi dari kota itu bakal dapat nilai 10 juta di kolom hasil transform. Jumlah baris output selalu sama persis dengan input.

Proses nyebarin nilai grup ke tiap baris ini mirip konsep broadcasting. Kalau kamu udah paham groupby agg yang ngeringkas data, transform itu kebalikannya: hitung per grup tapi pertahankan bentuk aslinya.

Gimana cara pakai transform?

Pola dasarnya: groupby dulu, pilih kolom, lalu panggil transform dengan nama fungsi. Hasilnya bisa langsung kamu taruh jadi kolom baru.

import pandas as pd

# total belanja per kota, disebar ke tiap baris
df['total_kota'] = df.groupby('kota')['nominal'].transform('sum')

# rata-rata belanja per kota di tiap baris
df['rata_kota'] = df.groupby('kota')['nominal'].transform('mean')

Setelah ini, DataFrame kamu tetap punya semua baris, cuma nambah dua kolom. Tiap baris sekarang tau total dan rata-rata kotanya sendiri, siap dipakai buat perhitungan lanjutan.

Gimana cara bikin kolom persen dari total grup?

Ini contoh paling berguna. Kamu mau tau kontribusi tiap transaksi terhadap total kotanya. Bagi nilai baris dengan total grup hasil transform.

df['pct_dari_kota'] = (
    df['nominal'] / df.groupby('kota')['nominal'].transform('sum') * 100
)

Karena transform balikin total kota di tiap baris, pembagiannya langsung sejajar baris per baris. Tanpa transform, kamu harus groupby, hitung total, lalu merge balik ke DataFrame asli. transform motong tiga langkah itu jadi satu.

Gimana cara isi nilai kosong pakai rata-rata grup?

transform juga rapi buat ngisi data kosong berdasarkan grupnya, bukan rata-rata global. Misalnya nominal yang hilang diisi rata-rata kota masing-masing.

df['nominal'] = df['nominal'].fillna(
    df.groupby('kota')['nominal'].transform('mean')
)

Cara ini lebih akurat daripada ngisi semua kekosongan pakai satu angka rata-rata global. Tiap baris kosong dapat estimasi yang ngikutin pola kotanya sendiri.

transform vs agg: bedanya di mana?

Aspektransformagg
Jumlah baris outputSama dengan inputSatu baris per grup
TujuanNambah kolom ke data asliBikin tabel ringkasan
Contoh hasilPersen dari total grupTotal dan rata-rata per kota
Cocok buatPerhitungan level barisLaporan agregat

Aturan praktisnya: kalau kamu mau nambah kolom ke data mentah, pakai transform. Kalau kamu mau tabel ringkasan yang lebih kecil, pakai agg.

Contoh kasus: kontribusi cabang toko_berkah

Aku pakai dataset toko_berkah, 2.800 transaksi dari 4 cabang. Aku mau tiap transaksi tau berapa persen kontribusinya ke omzet cabangnya, sambil semua baris tetap utuh buat analisa lanjutan.

df['pct_cabang'] = (
    df['nominal'] / df.groupby('cabang')['nominal'].transform('sum') * 100
)
top = df.sort_values('pct_cabang', ascending=False).head(10)

Hasilnya kelihatan menarik. Di cabang Surabaya, ada satu transaksi grosir senilai Rp 2,1 juta yang sendirian nyumbang 4,4% dari total omzet cabang itu. Bandingkan dengan cabang Bandung, di mana transaksi terbesarnya cuma nyumbang 0,8%.

Angka ini nunjukin Surabaya bergantung pada beberapa pembeli besar, sedangkan Bandung sebarannya rata dari banyak pembeli kecil. Insight kayak gini cuma keluar kalau tiap baris tau posisinya di dalam grup, dan itu justru yang transform kasih.

Kesalahan umum pakai transform

  • Ngira transform bisa ganti agg. Kalau kamu mau ringkasan, pakai agg. transform selalu balikin jumlah baris yang sama.
  • Fungsi ngembaliin ukuran salah. Fungsi di transform harus balikin nilai per baris atau satu nilai yang bisa disebar, bukan hasil dengan panjang beda.
  • Lupa pilih kolom. Kalau nggak milih kolom sebelum transform, pandas nyoba jalanin ke semua kolom dan bisa error.
  • Pakai merge padahal cukup transform. Banyak orang groupby lalu merge balik, padahal transform ngerjain itu dalam satu baris kode.

FAQ

Pertanyaan yang sering muncul soal transform di pandas.

Penutup

transform bikin kamu ngitung per grup tanpa ngorbanin satu baris pun. Pakai dia buat kolom persen dari total grup, isi nilai kosong per grup, atau normalisasi level baris. Kalau yang kamu mau justru ringkasan yang lebih kecil, itu tugas agg.

Sekali kamu paham bedanya, kamu berhenti bolak-balik groupby lalu merge. Mau lanjut? Baca dasar pandas groupby buat pondasinya. Detail method-nya ada di dokumentasi resmi pandas transform. Mau latihan pandas terarah? Kulik materinya di NgulikData.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

NumPy reshape: Ubah Bentuk Array (2026)
Tips & Trik
8 Oktober 2026•9 menit baca

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.

BimaBima
NumPy Array: Dasar-Dasar untuk Analis Data (2026)
Tips & Trik
6 Oktober 2026•10 menit baca

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.

BimaBima
Alternatif iterrows yang Lebih Cepat di Pandas
Tips & Trik
3 Oktober 2026•8 menit baca

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.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore