Sebagai Data Scientist, kita akan sering menemukan bahwa kita diharuskan untuk menganalisis data dari berbagai sumber data dalam satu waktu. Agar berhasil mencapai ini, kita harus dapat menggabungkan sumber data yang berbeda menggunakan berbagai metode secara efisien. Hari ini kita akan melihat penggunaan fungsi Pandas built-in .merge() untuk menggabungkan dua sumber data menggunakan beberapa metode penggabungan yang berbeda.
Bagi kalian yang baru mengenal data science atau belum pernah menggunakan Python Pandas, sebaiknya mulai terlebih dahulu membaca buku yang saya tulis disini. Buku tersebut akan memberi kalian petunjuk penginstalan dan pengetahuan latar belakang untuk postingan hari ini.
Pandas Merge
Contents
Fungsi bawaan Pandas .merge () menyediakan metode yang ampuh untuk menggabungkan dua DataFrame menggunakan merge gaya database. Bahkan saya menggunakan pandas untuk mengolah data pivot, kalian bisa baca disini
Syntax
# pandas.DataFrame.merge DataFrame.merge(right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes='_x', '_y', copy=True, indicator=False, validate=None)
- right- Ini akan menjadi DataFrame yang kalian ikuti.
- how – Di sini, kalian dapat menentukan bagaimana jenis merging yang ingin dilakukan. Defaultnya adalah inner Namun
- on – Jika kedua DataFrames berisi kolom atau kumpulan kolom bersama
Latihan Merging DataFrames
Di bawah ini kita akan membahas beberapa contoh bagaimana kalian dapat menggunakan fungsi mergin sendiri. Potongan yang disediakan di bawah ini akan membantu mu dalam membuat dua DataFrame agar mudah saya berikan nama left dan right yang masing-masing melibatkan sebuah key
import numpy as np import pandas as pd if __name__ == '__main__': np.random.seed(1) left_df = pd.DataFrame({'join_keys': ['a', 'b', 'c', 'd'], 'values': np.random.randint(10, 99, 4)}) right_df = pd.DataFrame({'join_keys': ['b', 'd', 'e', 'f'], 'values': np.random.randint(10, 99, 4)}) print(left_df) print(right_df)
hasil
join_keys values 0 a 47 1 b 22 2 c 82 3 d 19 join_keys values 0 b 85 1 d 15 2 e 89 3 f 74
Inner Join
Metode inner join adalah pandas-merge saat kita melewatkan argument how=’inner’ DataFrame yang dikembalikan hanya akan berisi nilai-nilai dari kolom gabungan yang umum/sama di antara kedua DataFrames, lebih jelasnya sebagai berikut
inner_join = left_df.merge(right=right_df, how='inner', on='join_keys')
hasil
join_keys values_x values_y 0 b 22 85 1 d 19 15
Dari hasil diatas, kita dapat melihat efek gabungan dalam pada dua DataFrames. Karena nilai a, c hanya ada tabel left_df dan e, f hanya ada di tabel right_df.
Left Join
Fungsi merge Left Join pandas dengan cara yang mirip dengan left outer join dalam SQL. DataFrame yang dikembalikan akan berisi semua nilai dari DataFrame kiri dan nilai apa pun yang cocok dengan kunci penggabung selama penggabungan dari DataFrame kanan.
left_join = left_df.merge(right=right_df, how='left', on='join_keys')
hasil
join_keys values_x values_y 0 a 47 NaN 1 b 22 85.0 2 c 82 NaN 3 d 19 15.0
Jika DataFrame yang tidak cocok dengan nilai dalam kolom merge akan menghasilkan NaN – Not a Number
Right Join
right join melakukan fungsi yang mirip dengan left join namun metode merge diterapkan ke DataFrame Kanan.
right_join = left_df.merge(right=right_df, how='right', on='join_keys')
hasilnya
join_keys values_x values_y 0 b 22.0 85 1 d 19.0 15 2 e NaN 89 3 f NaN 74
Seperti yang terlihat di atas, kunci apa pun yang tidak ada dari kanan, di DataFrame kiri, akan dimasukan kedalam dataframe kiri dengan hasil NaN
Outer Join
outer join menggabungkan kedua DataFrames dan pada dasarnya mencerminkan hasil dari gabungan left dan right outer join. outer join akan mengembalikan semua nilai dari DataFrame kiri dan kanan. Jika Pandas tidak dapat menemukan nilai dalam penggabungan DataFrame akan menghasilkan NaN dikedua kolom nya
outer_join = left_df.merge(right=right_df, how='outer', on='join_keys', indicator=True)
hasilnya
join_keys values_x values_y _merge 0 a 47.0 NaN left_only 1 b 22.0 85.0 both 2 c 82.0 NaN left_only 3 d 19.0 15.0 both 4 e NaN 89.0 right_only 5 f NaN 74.0 right_only
Saat menggabungkan dua DataFrame menggunakan outer join, terkadang merupakan informasi berguna untuk mengetahui dari mana rekaman dalam DataFrame baru berasal. Kalian bisa melihat asal record dengan meneruskan indicator = True sebagai parameter ke fungsi .merge() yang akan membuat kolom baru berjudul _merge.
Kesimpulan
Agar berhasil sebagai Data Scientist, kalian harus terampil menangani data dari berbagai sumber data pada waktu yang bersamaan. Seringkali kita perlu menggabungkan sumber data terkadang untuk memperkaya kumpulan data atau menggabungkan snapshot historis dalam data saat ini. Pandas menyediakan metode yang ampuh untuk menggabungkan kumpulan data menggunakan fungsi .merge() bawaan. Fungsi Pandas .merge() menawarkan fleksibilitas dalam jenis gabungan yang dapat kalian buat untuk mencapai output/hasil yang diinginkan.