Pandas map dan applymap: Transformasi Nilai (2026)
TL;DR
Di pandas, map dipakai buat Series dan ngubah tiap nilai di satu kolom, sedangkan applymap dipakai buat DataFrame dan ngubah tiap sel satu per satu. map bisa nerima fungsi atau dict, jadi enak buat ganti kode jadi label pakai kamus. Sejak pandas 2.1, applymap diganti nama jadi DataFrame.map, tapi applymap lama masih jalan. Buat logika antar kolom, pakai apply, bukan keduanya.
Di pandas, map ngubah tiap nilai di satu kolom (Series), dan applymap ngubah tiap sel di seluruh DataFrame. Keduanya buat transformasi per elemen, beda dari apply yang bisa lihat satu baris utuh.
Bedanya tipis tapi penting. Salah pilih bikin error atau hasil yang gak sesuai. Aku jelasin kapan pakai yang mana, plus trik map pakai dict yang paling sering kepakai buat ganti kode jadi label.
Satu catatan: sejak pandas versi 2.1, applymap diganti nama jadi DataFrame.map. Nama lama masih jalan tapi udah usang. Aku pakai keduanya di sini biar kamu kenal dua-duanya.
Apa itu map di pandas?
map adalah method Series yang jalanin sebuah fungsi atau kamus ke tiap nilai di satu kolom. Dia balikin Series baru dengan nilai yang udah diubah. map cuma ada di Series, jadi kamu manggilnya di satu kolom, bukan seluruh DataFrame.
Yang bikin map spesial, dia bisa nerima dict langsung, bukan cuma fungsi. Ini praktis buat nerjemahin kode jadi label. Buat transformasi yang butuh lihat beberapa kolom sekaligus, kamu butuh apply, yang aku bahas di artikel pandas apply.
Gimana cara map pakai fungsi dan lambda?
Panggil .map() di kolom, kasih fungsi sebagai argumen. map jalanin fungsi itu ke tiap nilai. Buat operasi singkat, lambda paling praktis. Hasilnya Series baru yang bisa langsung kamu simpan ke kolom.
import pandas as pd
df = pd.DataFrame({'harga': [18000, 15000, 25000]})
# Tambah pajak 11 persen ke tiap harga
df['harga_pajak'] = df['harga'].map(lambda x: x * 1.11)
# Format jadi teks rupiah
df['label'] = df['harga'].map(lambda x: f"Rp {x:,.0f}")
Baris pertama ngaliin tiap harga dengan 1,11. Baris kedua ngubah angka jadi teks berformat. map manggil lambda-nya sekali per nilai, jadi cocok buat transformasi sederhana per elemen.
Gimana cara map pakai dict?
Kasih dict ke map buat nerjemahin nilai berdasarkan kamus. Tiap nilai yang cocok sama kunci dict bakal diganti sama nilainya. Ini cara paling bersih buat ubah kode singkat jadi label lengkap. Nilai yang gak ada di dict bakal jadi NaN.
kode_kota = {'JKT': 'Jakarta', 'BDG': 'Bandung', 'SBY': 'Surabaya'}
df['kota'] = df['kode'].map(kode_kota)
Kolom kode yang isinya "JKT", "BDG" langsung jadi "Jakarta", "Bandung". Kalau ada kode yang gak terdaftar di dict, hasilnya NaN. Buat jaga-jaga, kamu bisa tambahin .fillna('Lainnya') setelahnya.
Apa itu applymap dan kapan dipakai?
applymap (atau DataFrame.map di pandas 2.1 ke atas) jalanin fungsi ke tiap sel di seluruh DataFrame, bukan cuma satu kolom. Pakai ini kalau kamu mau transformasi yang sama ke semua sel sekaligus, misalnya format angka atau bersihin spasi di semua kolom teks.
| Method | Berlaku di | Jalan per |
|---|---|---|
map | Series (1 kolom) | Tiap nilai |
applymap / DataFrame.map | Seluruh DataFrame | Tiap sel |
apply | Series atau DataFrame | Baris atau kolom |
# Bulatkan semua angka di DataFrame numerik
df_bulat = df.applymap(lambda x: round(x, 2))
# Versi pandas 2.1 ke atas
df_bulat = df.map(lambda x: round(x, 2))
Karena jalan ke tiap sel, applymap paling pas buat DataFrame yang semua kolomnya bertipe sama. Buat operasi antar kolom, tetap pakai apply.
Contoh kasus: standarisasi data pelanggan toko_berkah
Toko_berkah punya data 3.000 pelanggan dengan kode kota dan status keanggotaan yang masih berupa singkatan. Buat laporan, semua harus jadi label yang kebaca. Aku pakai map dengan dict buat dua kolom ini.
kota_map = {'JKT': 'Jakarta', 'BDG': 'Bandung', 'SBY': 'Surabaya', 'DPK': 'Depok'}
status_map = {'G': 'Gold', 'S': 'Silver', 'B': 'Bronze'}
df['kota'] = df['kode_kota'].map(kota_map)
df['status'] = df['kode_status'].map(status_map)
Setelah dijalanin, ada temuan yang gak kelihatan sebelum di-map: 214 baris (7,1%) punya kode kota yang gak ada di kamus, jadi hasilnya NaN. Ternyata itu kode kota lama sebelum sistem diganti, kayak "JKR" buat Jakarta.
Tanpa map, kode rusak ini nyamar di antara data valid dan gak ketahuan. Setelah ketahuan, tim data benerin kamusnya dan nemuin 4 kode usang yang perlu dimigrasi. Ini yang bikin laporan segmentasi kota jadi akurat.
Buat lanjut ngelompokin per kota setelah standarisasi, kamu bisa pakai groupby. Caranya ada di artikel pandas groupby.
Kesalahan umum
Pakai applymap di satu kolom. applymap buat DataFrame, bukan Series. Buat satu kolom, pakai map. Kalau kamu panggil applymap di Series, hasilnya error.
Lupa nilai gak cocok jadi NaN. Waktu map pakai dict, nilai yang gak ada di kunci bakal hilang jadi NaN. Ini gampang kelewat. Selalu cek jumlah NaN setelah map pakai dict.
Ketuker map sama apply buat operasi antar kolom. map cuma lihat satu nilai, gak bisa akses kolom lain. Kalau butuh gabungin dua kolom, itu kerjaan apply dengan axis=1.
Masih pakai applymap di kode baru. Sejak pandas 2.1, applymap udah usang dan digantikan DataFrame.map. Buat proyek baru, pakai df.map biar gak muncul peringatan usang di masa depan.
FAQ
Apa beda map dan apply di pandas?
map cuma ada di Series dan jalan ke tiap nilai satu kolom, plus bisa nerima dict buat nerjemahin nilai. apply lebih luas, bisa di Series maupun DataFrame, dan di DataFrame bisa jalan per baris (axis=1) sehingga lihat beberapa kolom sekaligus. Pakai map buat transformasi satu kolom yang sederhana, dan apply buat logika yang butuh gabungin beberapa kolom dalam satu perhitungan.
Kenapa hasil map jadi NaN?
Kalau map pakai dict, nilai yang gak ada di kunci kamus otomatis jadi NaN. Contohnya kamu map kode kota tapi ada kode yang belum terdaftar di dict. Cek dengan df['kolom'].isna().sum() buat tahu berapa yang gagal. Buat ngisi yang kosong, tambahin .fillna('nilai_default') setelah map. Ini juga cara bagus buat nemuin kode rusak atau format lama di data kamu.
Apakah applymap masih bisa dipakai?
Masih bisa, tapi udah usang sejak pandas 2.1. Namanya diganti jadi DataFrame.map biar konsisten sama Series.map. applymap lama tetap jalan buat sekarang dan cuma ngeluarin peringatan usang, belum error. Buat kode baru, mendingan langsung pakai df.map. Kalau kamu megang kode lama yang masih pakai applymap, gak perlu buru-buru ganti, tapi sebaiknya dimigrasi pelan-pelan.
Bisa gak map dipakai buat beberapa kolom sekaligus?
map sendiri cuma buat satu kolom karena dia method Series. Buat beberapa kolom dengan transformasi sama, pakai applymap atau DataFrame.map yang jalan ke tiap sel. Kalau tiap kolom butuh mapping berbeda, kamu bisa panggil map beberapa kali, satu per kolom, atau pakai loop kecil. Buat mapping berbeda per kolom, cara paling jelas tetap panggil map terpisah biar gampang dibaca.
Lebih cepat mana, map atau apply?
Buat operasi per elemen di satu kolom, map dan apply kecepatannya mirip karena sama-sama jalan per nilai. Bedanya lebih ke fungsi, bukan performa. Buat operasi yang punya versi vektor, kayak perkalian atau penjumlahan, dua-duanya kalah cepat dari operasi langsung seperti df['a'] * 1.1. Jadi kalau bisa divektor, hindari map maupun apply dan pakai operasi kolom langsung.
Penutup
Ringkasan map dan applymap di pandas:
Series.map()buat satu kolom, bisa pakai fungsi atau dictapplymap(atauDataFrame.mapdi pandas 2.1+) buat tiap sel seluruh DataFrame- Buat logika antar kolom, pakai
applydengan axis=1, bukan map
Dokumentasi resmi map ada di situs pandas. Buat pahami perbedaannya sama apply lebih dalam, baca artikel pandas apply, atau pelajari konsep vektorisasi biar tahu kapan cukup pakai operasi kolom langsung.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
Seaborn Pairplot: Cara Eksplorasi Data Cepat dengan Python (2026)
Satu baris kode buat lihat hubungan semua kolom numerik sekaligus. Ini cara pakai seaborn pairplot buat eksplorasi data, lengkap dengan contoh dan cara bacanya.
Seaborn Heatmap: Visualisasi Matriks Korelasi (2026)
Seaborn heatmap ngubah matriks korelasi jadi grid warna, jadi kamu bisa langsung lihat variabel mana yang saling terkait. Ini cara bikinnya dari df.corr() sampai atur warna dan angka.
Matplotlib Histogram: Cara Membuat dan Baca Distribusi Data di Python (2026)
Histogram bikin kamu lihat sebaran data dalam satu grafik. Ini cara bikinnya di Matplotlib pakai plt.hist(), dari kode paling dasar sampai atur bins dan label.