Traffine I/O

Bahasa Indonesia

2022-11-15

Merging, Concatenating, dan Joining DataFrames dalam Pandas

Pendahuluan

Manipulasi data adalah keterampilan penting bagi ilmuwan data dan analis, karena membantu untuk mempersiapkan dan membersihkan data untuk analisis lebih lanjut. Di Python, library pandas adalah alat yang fleksibel yang menyederhanakan tugas manipulasi data. Dalam artikel ini, saya akan membahas tiga teknik penting untuk menggabungkan DataFrame di pandas: merging, concatenating, dan joining.

Merging DataFrames

Merging adalah teknik yang digunakan untuk menggabungkan dua DataFrame berdasarkan nilai-nilai kolom mereka. Fungsi merge di pandas memungkinkan Anda menggabungkan DataFrame menggunakan berbagai jenis join, seperti inner, outer, left, dan right. Dalam bab ini, saya akan menjelajahi masing-masing jenis join dan aplikasi mereka.

Inner Merge

Inner merge, juga dikenal sebagai inner join, mengembalikan hanya baris dengan kunci yang cocok di kedua DataFrame. Ini adalah jenis merge default di pandas. Untuk melakukan inner merge, Anda dapat menggunakan fungsi pd.merge():

python
import pandas as pd

# Sample DataFrames
data1 = {'key': ['A', 'B', 'C', 'D'],
         'value': [1, 2, 3, 4]}
data2 = {'key': ['B', 'D', 'E', 'F'],
         'value': [5, 6, 7, 8]}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# Inner Merge
merged_df = pd.merge(df1, df2, on='key', suffixes=('_df1', '_df2'))
print(merged_df)
  key  value_df1  value_df2
0   B          2          5
1   D          4          6

Outer Merge

Outer merge, juga dikenal sebagai outer join, mengembalikan semua baris dari kedua DataFrame, mengisi nilai yang hilang dengan NaN ketika kunci tidak hadir di salah satu DataFrame. Untuk melakukan outer merge, Anda perlu menentukan parameter how sebagai 'outer':

python
# Outer Merge
merged_df = pd.merge(df1, df2, on='key', how='outer', suffixes=('_df1', '_df2'))
print(merged_df)
  key  value_df1  value_df2
0   A        1.0        NaN
1   B        2.0        5.0
2   C        3.0        NaN
3   D        4.0        6.0
4   E        NaN        7.0
5   F        NaN        8.0

Left Merge

Left merge, atau left join, mengembalikan semua baris dari DataFrame kiri dan baris yang cocok dari DataFrame kanan. Jika tidak ada kecocokan, digunakan nilai NaN. Untuk melakukan left merge, Anda perlu menentukan parameter how sebagai 'left':

python
# Left Merge
merged_df = pd.merge(df1, df2, on='key', how='left', suffixes=('_df1', '_df2'))
print(merged_df)
  key  value_df1  value_df2
0   A          1        NaN
1   B          2        5.0
2   C          3        NaN
3   D          4        6.0

Right Merge

Right merge, atau right join, mengembalikan semua baris dari DataFrame kanan dan baris yang cocok dari DataFrame kiri. Jika tidak ada kecocokan, digunakan nilai NaN. Untuk melakukan right merge, Anda perlu menentukan parameter how sebagai 'right':

python
# Right Merge
merged_df = pd.merge(df1, df2, on='key', how='right', suffixes=('_df1', '_df2'))
print(merged_df)
  key  value_df1  value_df2
0   B        2.0          5
1   D        4.0          6
2   E        NaN          7
3   F        NaN          8

Concatenating DataFrame

Concatenation adalah proses penggabungan DataFrame ujung ke ujung sepanjang sumbu tertentu, baik baris atau kolom. Berbeda dengan merging, concatenation tidak bergantung pada nilai kolom yang cocok. Sebaliknya, itu hanya menambahkan DataFrame bersama. Dalam bab ini, saya akan membahas cara menggabungkan DataFrame sepanjang baris dan kolom menggunakan pandas.

Concatenation Sejajar Baris

Untuk menggabungkan DataFrame sepanjang baris, Anda dapat menggunakan fungsi pd.concat(). Secara default, fungsi tersebut menggabungkan sepanjang baris (axis=0). Berikut contohnya:

python
import pandas as pd

# Sample DataFrames
data1 = {'A': [1, 2, 3],
         'B': [4, 5, 6]}
data2 = {'A': [7, 8, 9],
         'B': [10, 11, 12]}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# Concatenation along rows
concatenated_df = pd.concat([df1, df2], ignore_index=True)
print(concatenated_df)
   A   B
0  1   4
1  2   5
2  3   6
3  7  10
4  8  11
5  9  12

Pada contoh di atas, parameter ignore_index diatur sebagai True, yang mereindeks DataFrame hasil gabungan. Jika diatur sebagai False, nilai indeks asli akan dipertahankan.

Concatenation Sejajar Kolom

Untuk menggabungkan DataFrame sepanjang kolom, Anda perlu menentukan parameter axis sebagai 1 pada fungsi pd.concat():

python
# Sample DataFrames
data1 = {'A': [1, 2, 3],
         'B': [4, 5, 6]}
data2 = {'C': [7, 8, 9],
         'D': [10, 11, 12]}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# Concatenation along columns
concatenated_df = pd.concat([df1, df2], axis=1)
print(concatenated_df)
   A  B  C   D
0  1  4  7  10
1  2  5  8  11
2  3  6  9  12

Pada contoh di atas, DataFrame digabungkan sejajar sampingan sepanjang kolom, menghasilkan DataFrame yang lebih lebar. Perhatikan bahwa jumlah baris di kedua DataFrame harus sama untuk dapat menggabungkan sepanjang kolom.

Joining DataFrame

Joining adalah teknik lain untuk menggabungkan DataFrame di pandas, mirip dengan merging. Namun, joining secara khusus fokus pada penggabungan DataFrame berdasarkan nilai indeks mereka daripada nilai kolom yang cocok. Dalam bab ini, saya akan membahas jenis join yang tersedia di pandas dan cara melakukan join menggunakan fungsi join().

Inner Join

Inner join mengembalikan baris dari kedua DataFrame hanya ketika nilai indeks cocok di kedua DataFrame. Untuk melakukan inner join, Anda dapat menggunakan fungsi join() dan menetapkan parameter how sebagai 'inner':

python
import pandas as pd

# Sample DataFrames
data1 = {'A': [1, 2, 3],
         'B': [4, 5, 6]}
data2 = {'C': [7, 8, 9],
         'D': [10, 11, 12]}

df1 = pd.DataFrame(data1, index=['X', 'Y', 'Z'])
df2 = pd.DataFrame(data2, index=['Y', 'Z', 'W'])

# Inner Join
joined_df = df1.join(df2, how='inner')
print(joined_df)
   A  B  C   D
Y  2  5  8  11
Z  3  6  9  12

Outer Join

Outer join mengembalikan semua baris dari kedua DataFrame, mengisi nilai yang hilang dengan NaN ketika nilai indeks tidak hadir di salah satu DataFrame. Untuk melakukan outer join, set parameter how sebagai 'outer':

python
# Outer Join
joined_df = df1.join(df2, how='outer')
print(joined_df)
     A    B    C     D
W  NaN  NaN  9.0  12.0
X  1.0  4.0  NaN   NaN
Y  2.0  5.0  8.0  11.0
Z  3.0  6.0  9.0  12.0

Left Join

Left join mengembalikan semua baris dari DataFrame kiri dan baris yang cocok dari DataFrame kanan. Jika tidak ada kecocokan, digunakan nilai NaN. Untuk melakukan left join, set parameter how sebagai 'left':

python
# Left Join
joined_df = df1.join(df2, how='left')
print(joined_df)
   A  B    C     D
X  1  4  NaN   NaN
Y  2  5  8.0  11.0
Z  3  6  9.0  12.0

Right Join

Right join mengembalikan semua baris dari DataFrame kanan dan baris yang cocok dari DataFrame kiri. Jika tidak ada kecocokan, digunakan nilai NaN. Untuk melakukan right join, set parameter how sebagai 'right':

python
# Right Join
joined_df = df1.join(df2, how='right')
print(joined_df)
     A    B  C   D
Y  2.0  5.0  8  11
Z  3.0  6.0  9  12
W  NaN  NaN  9  12

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!