Merging Dataset Menggunakan Pandas

Untuk keperluan tutorial ini kita gunakan dataset sederhana. Silakan download di https://drive.google.com/file/d/1qzXAqT-pneSxEaDhJLlRZtpcrrNdvFDM/view?usp=sharing

Pertama import library yang digunakan, lalu load data.

import pandas as pd

students = pd.read_csv("students.csv")
teachers = pd.read_csv("teachers.csv")
grades1 = pd.read_csv("grades1.csv")
grades2 = pd.read_csv("grades2.csv")
contacts = pd.read_csv("contact.csv")

Menambahkan Kolom

Kita tambahkan kolom semester pada dataframe grades1 dan grades2. Lalu gabungkan menjadi satu dataframe grades dengan perintah concat.

grades1["Semester"] = 1
grades2["Semester"] = 2

grades = pd.concat([grades1, grades2])

Jika kita lihat isi dataframe grades, kurang lebih seperti berikut.

        student_id	course	grade	Semester
0	34292	       ENGL101	A	1
1	34293	       ENGL101	A	1
2	34294	       ENGL101	C	1
3	34295	       ENGL101	C	1
4	34296	       ENGL101	C	1
...	...	       ...	...	...

Yang perlu diperhatikan adalah perintah concat tidak mengubah index dataframe. Perlu dilakukan reset_index. Parameter drop=True akan mengganti index lama dengan index baru dengan nilai incremental integer.

grades = grades.reset_index(drop=True)

Merging Horizontal

Contoh kasus: menggabungkan data student dan grade. Dataframe akhir akan berisi data seperti: idstudent, nama, course, grade, dan semester.

Boleh dikatakan merging horizontal seperti perintah SELECT pada SQL, dimana kita mendefinisikan WHERE dengan parameter left_on dan right_on.

Untuk lebih jelasnya lihat code dibawah. left_on diisi dengan id dari dataframe students, dan right_on diisi dengan student_id dari dataframe grades.

student_grades = pd.merge(students, grades, left_on="id", right_on="student_id")

Jika primary key yang digunakan memiliki nama kolom sama, gunakan parameter on=”nama_kolom_primary_key”.

Contoh, gabungkan dataframe students dengan contact. Pertama kita ubah dahulu kolom id pada students menjadi students_id

students2 = students.rename({"id": "student_id"}, axis=1)

students_full = students2.merge(contacts, on="student_id")

Jika kita lihat, isi dataframe akan seperti berikut

Parameter lainnya yang perlu diperhatikan adalah how, terdapat 4 option.

pd.merge(leftdf, rightdf, left_on="columnkey", right_on="columnkey", how="how_parameter")
  • inner, default adalah inner, merge terjadi bila kedua dataset memiliki primary key
  • outer, merge tanpa memperhatikan primary key.
  • left, merge berdasarkan semua left dataset.
  • right, merge berdasarkan semua right dataset.

Menggunakan Join

Kita dapat gunakan perintah join untuk merging dataframe. Perintah join harus menggunakan index sebagai primary key.

Contoh skenario menggabungkan data students dengan contact. Maka langkah pertama adalah mengatur index menggunakan kolom primary key.

Baru kemudian perintah join bisa digunakan untuk merge kedua dataframe.

students2 = students.set_index("id")
contacts2 = contacts.set_index("student_id")

students2.join(contacts2)
Sharing is caring:

Leave a Comment