Python Pandas Merging DataFrames

By | October 23, 2021
5,934 Views

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

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.

See also  Simple Convert JPG ke PDF via Python

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.

See also  Membuat Lag time series di Pandas