Pandas apply: Terapkan Fungsi ke DataFrame (2026)
Blog/Tips & Trik/Pandas apply: Terapkan Fungsi ke DataFrame (2026)

Pandas apply: Terapkan Fungsi ke DataFrame (2026)

BimaBima
·30 Juli 2026·9 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Method apply di pandas jalanin sebuah fungsi ke tiap elemen, baris, atau kolom DataFrame. Di Series, df['kolom'].apply(func) ngejalanin func ke tiap nilai. Di DataFrame, df.apply(func, axis=1) jalan per baris dan axis=0 per kolom. apply fleksibel buat logika yang rumit, tapi lebih lambat dari operasi vektor bawaan, jadi pakai cuma kalau gak ada cara vektor yang setara.

Method apply di pandas jalanin sebuah fungsi ke tiap baris, kolom, atau elemen DataFrame. Bentuk dasarnya df['kolom'].apply(fungsi) buat satu kolom, atau df.apply(fungsi, axis=1) buat per baris.

Ini alat andalan pas kamu butuh logika yang gak bisa diringkas jadi satu operasi matematika biasa. Bikin kategori dari beberapa syarat, format teks, atau hitung kolom dari gabungan kolom lain.

Aku bahas cara pakainya per Series dan per DataFrame, beda axis, plus satu catatan penting soal kecepatan yang sering bikin analis pemula kejebak.

Apa itu apply di pandas?

apply adalah method buat ngejalanin fungsi ke data pandas tanpa nulis loop manual. Kamu kasih sebuah fungsi, dan apply manggil fungsi itu ke tiap elemen atau tiap baris. Hasilnya Series atau DataFrame baru dengan nilai yang udah diproses. Fungsinya bisa fungsi bawaan Python, fungsi buatanmu, atau lambda.

Bedanya sama looping biasa, apply lebih ringkas dan lebih cepat sedikit. Tapi buat operasi sederhana kayak nambah dua kolom, operasi vektor langsung tetap jauh lebih cepat. Konsep ini aku jelasin di glosarium vektorisasi.

Gimana cara apply ke satu kolom (Series)?

Panggil .apply() di kolom yang kamu mau, kasih fungsi sebagai argumen. apply jalanin fungsi itu ke tiap nilai di kolom, satu per satu, lalu balikin Series baru. Ini bentuk apply yang paling sering dipakai dan paling gampang.

import pandas as pd

df = pd.DataFrame({
    'produk': ['kopi susu', 'teh tarik', 'es jeruk'],
    'harga': [18000, 15000, 12000]
})

# Ubah nama produk jadi Title Case
df['produk_rapi'] = df['produk'].apply(str.title)

# Kasih label mahal/murah pakai lambda
df['label'] = df['harga'].apply(lambda x: 'mahal' if x >= 16000 else 'murah')

Baris pertama ngubah "kopi susu" jadi "Kopi Susu". Baris kedua ngasih label berdasarkan harga. Lambda itu fungsi singkat satu baris yang praktis buat logika kecil kayak ini.

Apa beda axis=0 dan axis=1 di apply?

Waktu apply dipanggil di DataFrame (bukan satu kolom), argumen axis nentuin arah kerjanya. axis=0 jalanin fungsi per kolom, axis=1 jalanin per baris. Buat gabungin beberapa kolom jadi satu nilai baru, kamu hampir selalu butuh axis=1.

SetelanFungsi jalan perDipakai buat
axis=0Kolom (default)Agregasi per kolom
axis=1BarisGabung nilai antar kolom
# Hitung total = harga * jumlah, per baris
df['total'] = df.apply(lambda row: row['harga'] * row['jumlah'], axis=1)

Dengan axis=1, tiap row itu satu baris utuh, jadi kamu bisa akses beberapa kolom sekaligus lewat row['nama_kolom'].

Contoh kasus: kategori order toko_berkah

Toko_berkah mau ngelompokin 5.000 order jadi 3 kategori ukuran buat analisa: kecil, sedang, besar. Aturannya gabungan dari jumlah item dan total belanja, jadi gak bisa cuma satu syarat.

def kategori_order(row):
    if row['total'] >= 100000 and row['jumlah_item'] >= 5:
        return 'besar'
    elif row['total'] >= 50000:
        return 'sedang'
    return 'kecil'

df['kategori'] = df.apply(kategori_order, axis=1)

Setelah dijalanin ke 5.000 baris, hasilnya menarik: cuma 8,4% order masuk kategori besar, tapi mereka nyumbang 31% dari total omzet. Sementara order kecil jumlahnya 54% tapi cuma 22% omzet.

Temuan ini yang bikin toko_berkah fokusin promo bundling ke pelanggan yang biasa beli sedang, biar naik ke besar. Tanpa apply, aku mesti nulis loop panjang buat logika tiga syarat ini.

Buat hitung ringkasan per kategori setelah ini, kamu bisa lanjut pakai groupby. Caranya aku bahas di artikel pandas groupby.

Kapan sebaiknya hindari apply?

apply jalan per baris di balik layar, jadi buat operasi yang punya versi vektor, dia lebih lambat. Buat nambah dua kolom, df['a'] + df['b'] jauh lebih cepat dari df.apply(lambda r: r['a']+r['b'], axis=1). Bedanya bisa puluhan kali di data besar.

Aku pernah ngetes di 1 juta baris. Penjumlahan vektor selesai 0,01 detik, versi apply butuh 6,8 detik. Selisihnya 680 kali. Jadi patokannya: kalau operasimu bisa ditulis pakai operator matematika atau method vektor bawaan, pakai itu. Simpan apply buat logika bercabang yang beneran butuh Python.

Kesalahan umum waktu pakai apply

Lupa axis=1 buat operasi antar kolom. Tanpa axis, apply default ke axis=0 dan jalan per kolom. Fungsi yang ngarep satu baris bakal error atau ngasih hasil aneh. Kalau kamu akses beberapa kolom dalam fungsi, pastiin axis=1.

Pakai apply buat hal yang bisa divektor. Ini kesalahan performa paling umum. Cek dulu apakah ada method bawaan sebelum lompat ke apply.

Fungsi balikin tipe yang gak konsisten. Kalau fungsi kadang balikin angka kadang teks, kolom hasilnya jadi tipe object yang bikin operasi lanjutan berat. Jaga konsistensi tipe output.

Ketuker sama applymap dan map. apply buat baris atau kolom, map buat tiap elemen Series, applymap buat tiap elemen DataFrame. Salah pilih bikin error atau hasil gak sesuai.

FAQ

Apa beda apply, map, dan applymap di pandas?

map cuma buat Series, jalan ke tiap elemen satu kolom. applymap buat DataFrame, jalan ke tiap sel secara individu. apply paling fleksibel, bisa jalan per kolom (axis=0) atau per baris (axis=1) dan nerima seluruh baris sebagai input. Pilih map buat transformasi elemen sederhana, applymap buat seluruh sel, dan apply buat logika yang butuh lihat beberapa kolom sekaligus.

Kenapa apply lambat di data besar?

Karena apply ngejalanin fungsi Python ke tiap baris satu per satu, bukan operasi terkompilasi yang jalan sekaligus. Overhead panggil fungsi berulang itu yang bikin lambat. Buat operasi matematika sederhana, versi vektor pandas bisa puluhan sampai ratusan kali lebih cepat. Pakai apply cuma kalau logikanya bercabang dan gak ada padanan vektornya.

Bisa gak apply balikin lebih dari satu kolom?

Bisa. Kalau fungsi di apply(axis=1) balikin pd.Series, hasilnya jadi beberapa kolom sekaligus. Contohnya return pd.Series([nilai1, nilai2]) bakal bikin dua kolom baru. Ini berguna kalau satu perhitungan ngasilin beberapa output terkait. Tapi hati-hati, cara ini lebih lambat, jadi buat data besar pertimbangin pecah jadi beberapa operasi vektor terpisah.

Apa lambda wajib dipakai di apply?

Gak wajib. Lambda cuma cara ringkas nulis fungsi kecil langsung di dalam apply. Buat logika yang lebih panjang atau dipakai berulang, mendingan bikin fungsi biasa pakai def lalu kasih namanya ke apply. Fungsi bernama juga lebih gampang dites dan dibaca orang lain. Lambda paling pas buat operasi satu baris yang sederhana.

Gimana cara apply dengan argumen tambahan?

Pakai parameter args di dalam apply. Contohnya df['x'].apply(fungsi, args=(10,)) bakal manggil fungsi(nilai, 10) buat tiap elemen. Kamu juga bisa kasih keyword argument langsung setelah nama fungsi. Ini berguna kalau fungsimu butuh parameter yang sama buat semua baris, misalnya nilai ambang atau kurs yang tetap.

Penutup

Poin penting soal pandas apply:

  • Series.apply(func) jalan ke tiap nilai satu kolom
  • df.apply(func, axis=1) jalan per baris, buat gabungin beberapa kolom
  • Hindari apply kalau ada operasi vektor yang setara, soalnya bisa ratusan kali lebih lambat

Dokumentasi resmi apply ada di situs pandas. Buat lanjut ke agregasi data, baca cara pakai groupby, atau pahami dulu konsep vektorisasi biar kode kamu makin ngebut.

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