Pandas Merge

Kode Lima Detik

import pandas as pd

penjualan = pd.read_csv('transaksi_penjualan.csv')
penjual = pd.read_csv('penjual.csv')

trx_penjualan = penjualan.merge(penjual, left_on='id_penjual', right_on='id')
trx_penjualan2 = penjualan.merge(penjual, left_on='id_penjual', right_on='id', how='right')

Latar Belakang

Menggabungkan data dari banyak sumber, entah berupa tabel database, banyak sheets Excel atau beberapa berkas yang terpisah, merupakan sebuah keniscayaan.

Pandas memiliki beberapa fungsi yang dapat digunakan untuk keperluan itu, pada tulisan ini kita akan mencoba salah satunya, yaitu fungsi merge.


Kode

Pertama load library, yaitu pandas, dan data yang akan digunakan. Untuk kali ini data bersahadja yang kita gunakan adalah data penjual dan transaksi penjualan. Notebook (pandas_merge.ipynb) dan data yang kita gunakan dapat diakses di sini.

import pandas as pd

penjualan = pd.read_csv('transaksi_penjualan.csv')
penjual = pd.read_csv('penjual.csv')

Kita akan menggabungkan data penjualan dan penjual sehingga pada data penjualan ada kolom berisi nama penjual, alih-alih hanya id_penjual. Kita membutuhkan kolom referensi (atau biasa disebut primary key/foreign key pada database) yang ada pada kedua data. Dalam contoh di atas, kolom id_penjual pada data penjualan dan kolom id pada data penjual.

Kolom Referensi Berbeda Nama

Karena kolom referensi pada kedua dataframe berbeda nama maka kita perlu mengisi parameter left_on dan right_on pada fungsi merge.

trx_penjualan = penjualan.merge(penjual, left_on='id_penjual', right_on='id')

Data penjualan kita jadikan data utama atau diistilahkan dataframe kiri, karena itu parameter left_on diisi kolom id_penjual yang ada di data penjualan. Sedang data penjual menjadi dataframe kanan yang diambil hanya data yang ada di dataframe kiri dengan kolom id sebagai penghubung. Dalam gambar terlihat trx_penjualan hanya berisi 10 baris data dari data penjualan padahal data penjual memuat 20 data.

Untuk mengubah data mana yang akan ditampilkan semua barisnya, silahkan mencoba-coba parameter how pada fungsi merge. Parameter ini dapat diisi dengan ‘left’, ‘right’, ‘outer’ dan ‘inner’ (secara default ‘inner’ inilah yang digunakan). Penggunaan parameter ini sama dengan Query pada SQL.

Kolom Referensi Bernama Sama

Jika kolom referensi pada kedua dataframe memiliki nama yang sama, maka cukup mengisi parameter on pada fungsi merge.

Sebagai ilustrasi, kita buat sebuah variabel baru berisi data penjual kemudian me-rename kolom menjadi id_penjual.

penjual2 = penjual.copy()
penjual2.rename(columns={'id': 'id_penjual'}, inplace=True)

Kemudian gabungkan data penjualan dengan data penjual2 tanpa mengisi parameter left_on dan right_on namun cukup menggunakan on.

trx_penjualan2 = penjualan.merge(penjual2, on='id_penjual')

Menampilkan Semua Data pada Dataframe Kanan

Pada bagian sebelumnya disebutkan bahwa parameter how secara default menggunakan inner. Jika ingin menampilkan semua data pada dataframe kanan kita dapat menggunakan ‘right‘ pada parameter how.

trx_penjualan3 = penjualan.merge(penjual2, on='id_penjual', how='right')

Semua baris pada data penjual ditampilkan. Jika penjual tersebut tidak terdapat dalam data penjualan maka kolom tanggal dan nilai akan berisi NaN.


Referensi


Cover Image by Ulrike Leone from Pixabay

One Reply to “Pandas Merge”

Leave a Reply

Your email address will not be published. Required fields are marked *