Penggabungan dan Penyatuan Lanjutan
pd.merge() dengan how, on, left_on/right_on, suffixes, serta merge_asof untuk penyatuan berbasis waktu.
Penggabungan dan Penyatuan Lanjutan adalah pelajaran Learn AI with Python 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 Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.
Menggabungkan DataFrame
pd.merge menggabungkan dua DataFrame berdasarkan kunci yang sama, persis seperti SQL JOIN. Menguasai opsi how sangat penting untuk mengolah data relasional.
import pandas as pd
left = pd.DataFrame({"id": [1, 2, 3], "name": ["a", "b", "c"]})
right = pd.DataFrame({"id": [2, 3, 4], "score": [90, 80, 70]})Penggabungan Dalam (bawaan)
how="inner" hanya mempertahankan kunci yang ada pada KEDUA DataFrame. Ini adalah pilihan bawaan.
print(pd.merge(left, right, on="id", how="inner"))
# id name score
# 0 2 b 90
# 1 3 c 80Penggabungan Kiri
how="left" mempertahankan setiap baris dari DataFrame kiri; kolom kanan yang tidak memiliki pasangan menjadi NaN. Ini adalah penggabungan yang paling umum dalam analitik.
print(pd.merge(left, right, on="id", how="left"))
# id name score
# 0 1 a NaN
# 1 2 b 90.0
# 2 3 c 80.0Penggabungan Luar
how="outer" mempertahankan semua kunci dari kedua sisi dan mengisi bagian yang kosong dengan NaN. Gunakan cara ini untuk melihat gabungan lengkap seluruh rekaman.
print(pd.merge(left, right, on="id", how="outer"))
# includes id 1 (no score) and id 4 (no name)Menggabungkan Kolom dengan Nama Berbeda
Jika nama kolom kunci berbeda, gunakan left_on dan right_on, bukan on.
r2 = right.rename(columns={"id": "user_id"})
print(pd.merge(left, r2, left_on="id", right_on="user_id"))Akhiran untuk Kolom yang Tumpang Tindih
Jika kedua DataFrame memiliki nama kolom nonkunci yang sama, pandas menambahkan _x dan _y. Ganti akhiran tersebut dengan suffixes agar lebih jelas.
a = pd.DataFrame({"id": [1], "val": [10]})
b2 = pd.DataFrame({"id": [1], "val": [99]})
print(pd.merge(a, b2, on="id", suffixes=("_old", "_new")))Kolom Penanda
indicator=True menambahkan kolom _merge yang menunjukkan sumber setiap baris: left_only, right_only, atau both. Fitur ini sangat berguna untuk mengaudit penggabungan.
print(pd.merge(left, right, on="id", how="outer", indicator=True))
# _merge tells you where each row came fromMendiagnosis Masalah Penggabungan
Memfilter berdasarkan penanda dengan cepat mengungkapkan kunci yang tidak memiliki pasangan, yang merupakan penyebab umum data terhapus tanpa terlihat.
m = pd.merge(left, right, on="id", how="outer", indicator=True)
print(m[m["_merge"] != "both"]) # rows that did not matchmerge_asof untuk Penggabungan Berdasarkan Waktu
pd.merge_asof menggabungkan berdasarkan kunci TERDEKAT, bukan kecocokan yang persis. Fungsi ini dirancang khusus untuk menyelaraskan deret waktu, misalnya mencocokkan setiap transaksi dengan kuotasi terbaru sebelumnya. Kedua DataFrame harus diurutkan berdasarkan kuncinya.
trades = pd.DataFrame({"time": [1, 3, 7], "price": [10, 11, 12]})
quotes = pd.DataFrame({"time": [0, 2, 5], "bid": [9, 10, 11]})
print(pd.merge_asof(trades, quotes, on="time"))Arah merge_asof
Secara bawaan, merge_asof melihat ke ARAH BACKWARD (kunci terbaru pada atau sebelum waktu tersebut). Gunakan direction="forward" atau "nearest" untuk mengubah aturan pencocokan.
print(pd.merge_asof(trades, quotes, on="time", direction="nearest"))Memilih Penggabungan yang Tepat
Gunakan inner untuk mempertahankan hanya kecocokan, left untuk memperkaya tabel utama, outer untuk gabungan lengkap, dan merge_asof untuk penggabungan yang selaras berdasarkan waktu (dengan kunci perkiraan).
Pemeriksaan Singkat
Uji pengetahuan Anda tentang penggabungan.
Ringkasan
Perangkat penggabungan:
how=inner / left / outer mengatur kunci mana yang dipertahankanondibandingkan denganleft_on/right_onuntuk kolom kuncisuffixesmembedakan nama yang tumpang tindihindicator=Truememeriksa sumber barispd.merge_asofuntuk penggabungan berdasarkan waktu dengan kunci terdekat (urutkan terlebih dahulu)
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penggabungan dan Penyatuan Lanjutan” gratis?
Ya — teks lengkap “Penggabungan dan Penyatuan Lanjutan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Penggabungan dan Penyatuan Lanjutan”?
pd.merge() dengan how, on, left_on/right_on, suffixes, serta merge_asof untuk penyatuan berbasis waktu. Kamu berlatih Learn AI with Python 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 Learn AI with Python?
Tidak diperlukan pengalaman sebelumnya. Learn AI with Python 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 “Penggabungan dan Penyatuan Lanjutan” 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 Learn AI with Python ini?
Ya. Setiap pelajaran Learn AI with Python 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
- GroupBy dan Agregasi
- Tabel Pivot dan Tabulasi Silang
- Penggabungan dan Penyatuan Lanjutan
- Deret Waktu dalam Pandas