0Pricing
Pandas & NumPy Academy · Pelajaran

map() dan applymap() untuk Operasi Per Elemen

Terapkan fungsi pada setiap elemen Series dengan map() dan pada setiap sel DataFrame dengan applymap().

map() dan applymap() untuk Operasi Per Elemen adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Ikhtisar Series.map()

Series.map() menerapkan fungsi, kamus, atau Series lain ke setiap elemen Series dan mengembalikan Series baru. Berbeda dari apply(), yang dapat menerima objek kompleks, map() selalu beroperasi pada nilai skalar individual. Ini adalah alat standar untuk mengodekan nilai kategorikal, mencari label dari tabel pemetaan, atau menerapkan transformasi sederhana pada setiap elemen.

import pandas as pd

codes = pd.Series(['N', 'S', 'E', 'N', 'W'])
region_names = {'N': 'North', 'S': 'South', 'E': 'East', 'W': 'West'}

names = codes.map(region_names)
print(names)

map() dengan Fungsi

Teruskan fungsi, termasuk lambda, ke map() ketika transformasi melibatkan logika, bukan tabel pencarian. Fungsi tersebut menerima satu skalar pada satu waktu sehingga tidak dapat mengakses baris atau kolom lain. Untuk penetapan label bersyarat sederhana, map() dengan fungsi lebih rapi daripada perulangan, tetapi lebih lambat daripada np.where() untuk Series berukuran besar.

prices = pd.Series([5.0, 25.0, 80.0, 150.0])

category = prices.map(lambda p: 'budget' if p < 20 else 'mid' if p < 100 else 'premium')
print(category)

map() vs. replace()

map() dan replace() sama-sama dapat mengganti nilai menggunakan kamus. Perbedaan utamanya: map() mengembalikan NaN untuk nilai apa pun yang tidak ditemukan dalam kamus, kecuali Anda menggunakan fillna() setelahnya, sedangkan replace() membiarkan nilai yang tidak cocok tetap seperti semula. Gunakan replace() jika Anda hanya ingin mengubah nilai tertentu dan mempertahankan nilai lainnya.

s = pd.Series(['A', 'B', 'C', 'D'])
map_dict = {'A': 'Alpha', 'B': 'Beta'}

print('map():', s.map(map_dict).tolist())      # C,D → NaN
print('replace():', s.replace(map_dict).tolist())  # C,D → unchanged

map() dengan Series (Pencarian Label)

Anda dapat meneruskan Series lain ke map() sebagai tabel pencarian: nilai pada Series pemanggil digunakan sebagai kunci untuk mencari nilai dalam indeks Series argumen. Ini adalah cara ringkas untuk menggabungkan tabel pencarian tanpa pemanggilan merge() lengkap—cara kerjanya seperti pencarian kamus tervectorisasi dengan tabel pencarian yang diindeks berdasarkan kunci.

prices_lookup = pd.Series(
    [10.0, 25.0, 50.0],
    index=['SKU-001', 'SKU-002', 'SKU-003']
)

orders = pd.Series(['SKU-002', 'SKU-001', 'SKU-003', 'SKU-001'])
order_prices = orders.map(prices_lookup)
print(order_prices)

DataFrame.applymap() untuk Operasi per Sel

DataFrame.applymap(), yang disebut DataFrame.map() pada Pandas 2.1+, menerapkan fungsi ke setiap sel individual dalam DataFrame. Berbeda dari apply(axis=0), yang menerima satu kolom penuh, applymap() menerima satu skalar pada satu waktu. Ini berguna untuk memformat semua sel secara seragam—misalnya, membulatkan setiap sel numerik menjadi 2 angka desimal atau mengubah setiap sel string menjadi huruf kecil.

df = pd.DataFrame({
    'a': [1.234, 5.678, 9.012],
    'b': [3.456, 7.890, 2.345]
})

# Round every cell to 1 decimal place
df_rounded = df.applymap(lambda x: round(x, 1))
print(df_rounded)

applymap() untuk Pemformatan String

Terapkan pemformatan string yang konsisten ke setiap sel dalam DataFrame yang berisi berbagai string—misalnya, mengubah semua nilai menjadi kapitalisasi judul atau mengubah None menjadi string kosong. applymap(str.strip) menghapus spasi kosong dari setiap sel di seluruh DataFrame dalam satu pemanggilan, jauh lebih ringkas daripada mengiterasi kolom dan menerapkan .str.strip() ke masing-masing kolom.

df_str = pd.DataFrame({
    'name': [' Alice ', 'Bob  ', '  Carol'],
    'city': ['new york ', ' london', 'paris  ']
})

df_clean = df_str.applymap(str.strip)
print(df_clean)

applymap() untuk Pemformatan Mata Uang

Saat menyiapkan DataFrame untuk ditampilkan dalam laporan, format sel numerik sebagai string mata uang menggunakan applymap(). Cara ini mengubah angka menjadi string yang siap ditampilkan tanpa mengubah tipe data yang mendasarinya—transformasi tersebut hanya berlaku untuk output akhir. Terapkan langkah ini sebagai tahap terakhir sebelum memanggil to_excel() atau to_html() untuk mengekspor tabel yang telah diformat.

revenue_table = pd.DataFrame({
    'North': [12300.0, 9800.0],
    'South': [7400.0, 11200.0]
}, index=['Q1', 'Q2'])

formatted = revenue_table.applymap(lambda x: f'${x:,.0f}')
print(formatted)

Pandas 2.1: applymap Diubah Namanya Menjadi map

Pada Pandas 2.1, DataFrame.applymap() diubah namanya menjadi DataFrame.map() agar konsisten dengan Series.map(). applymap() yang lama masih berfungsi dengan peringatan penghentian penggunaan. Dalam kode produksi, periksa versi Pandas Anda dan gunakan df.map(func) jika menggunakan versi 2.1 atau setelahnya untuk menghindari peringatan penghentian penggunaan pada rilis mendatang.

import pandas as pd

print('Pandas version:', pd.__version__)

# Forward-compatible pattern:
if hasattr(pd.DataFrame, 'map'):
    df_clean = df_str.map(str.strip)  # Pandas 2.1+
else:
    df_clean = df_str.applymap(str.strip)  # Pandas < 2.1

print(df_clean)

map() untuk Mengodekan Fitur Kategorikal

Model pembelajaran mesin memerlukan input numerik, sehingga kolom kategorikal harus dikodekan. Gunakan map() dengan kamus pengodean bilangan bulat untuk mengubah kategori menjadi angka ordinal sebelum meneruskan DataFrame ke model. Untuk kategori nominal tanpa urutan alami, pilih pd.get_dummies() atau OneHotEncoder dari scikit-learn.

size_order = {'small': 0, 'medium': 1, 'large': 2, 'enterprise': 3}

df['size_encoded'] = df['order_size'].map(size_order)
print(df[['order_size', 'size_encoded']])

Merangkai map() untuk Pencarian Bertahap

Rangkai dua pemanggilan map() ketika Anda memerlukan pencarian dua tingkat: pertama, petakan kode ke kunci perantara, lalu petakan kunci perantara tersebut ke label akhir. Misalnya, petakan SKU produk ke kode kategori, lalu petakan kode kategori ke nama kategori. Merangkai dua pemanggilan map() lebih rapi daripada menggunakan kamus bertingkat atau melakukan penggabungan lalu penggabungan lainnya.

sku_to_cat_code = {'SKU-001': 'C1', 'SKU-002': 'C2', 'SKU-003': 'C1'}
cat_code_to_name = {'C1': 'Electronics', 'C2': 'Apparel'}

skus = pd.Series(['SKU-001', 'SKU-002', 'SKU-003'])
cat_names = skus.map(sku_to_cat_code).map(cat_code_to_name)
print(cat_names)

Penanganan Null per Elemen dengan map

Saat menggunakan map(func), fungsi tetap dipanggil untuk nilai NaN, yang dapat menyebabkan TypeError jika fungsi tidak menangani None. Bungkus fungsi dengan pemeriksaan null menggunakan pd.isna(x), atau gunakan parameter na_action='ignore' dalam map() untuk melewati nilai NaN dan membiarkannya sebagai NaN dalam output tanpa memanggil fungsi.

s = pd.Series([1.0, None, 3.0, None, 5.0])

# na_action='ignore' skips NaN values
result = s.map(lambda x: x * 2, na_action='ignore')
print(result)

Pemeriksaan Singkat

Uji pemahaman Anda tentang konsep Analisis Data dari pelajaran ini.

Ringkasan Pelajaran

Dalam pelajaran ini, Anda telah mempelajari: menggunakan Series.map() untuk pencarian skalar dengan fungsi dan kamus, menggunakan DataFrame.applymap()/map() untuk pemformatan per sel di seluruh kolom, serta memahami perbedaan antara map() dan replace() dalam menangani nilai yang tidak cocok. Selanjutnya, kita akan mempelajari perangkaian metode dengan pipe() untuk pipeline transformasi yang mudah dibaca.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “map() dan applymap() untuk Operasi Per Elemen” gratis?

Ya — teks lengkap “map() dan applymap() untuk Operasi Per Elemen” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “map() dan applymap() untuk Operasi Per Elemen”?

Terapkan fungsi pada setiap elemen Series dengan map() dan pada setiap sel DataFrame dengan applymap(). Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?

Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “map() dan applymap() untuk Operasi Per Elemen” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?

Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. apply() pada Kolom dan Baris
  2. apply() dengan GroupBy
  3. map() dan applymap() untuk Operasi Per Elemen
  4. Perangkaian Metode dengan pipe()
← Kembali ke Pandas & NumPy Academy