[파이썬] pandas에서 데이터 병합 (merge, join, concat)

데이터 분석 작업 중, 여러 개의 데이터셋을 하나로 병합해야 할 때가 있습니다. pandas는 이러한 작업을 쉽게 할 수 있도록 여러 가지 병합 방법을 제공합니다. 이번 포스트에서는 merge, join, concat 세 가지 방법에 대해 알아보겠습니다.

1. merge

merge 함수는 두 개의 데이터프레임을 특정 열을 기준으로 병합하는 방법입니다. 대체로 SQL의 JOIN과 비슷한 개념으로 사용됩니다.

다음은 merge 함수의 사용법 예시입니다.

import pandas as pd

# 첫 번째 데이터프레임 생성
df1 = pd.DataFrame({
   'key': ['A', 'B', 'C', 'D'],
   'value': [1, 2, 3, 4]
})

# 두 번째 데이터프레임 생성
df2 = pd.DataFrame({
   'key': ['B', 'D', 'E', 'F'],
   'value': [5, 6, 7, 8]
})

# merge를 사용하여 두 데이터프레임 병합
merged_df = pd.merge(df1, df2, on='key')

print(merged_df)

이 코드는 key 열을 기준으로 df1df2를 병합합니다. 결과는 다음과 같이 나타납니다.

  key  value_x  value_y
0   B        2        5
1   D        4        6

2. join

join 메소드는 두 개 이상의 데이터프레임을 인덱스 또는 열을 기준으로 병합하는 방법입니다. merge와 달리 기준 열이 아니라 인덱스나 열을 사용해 병합합니다.

다음은 join 메소드의 사용법 예시입니다.

import pandas as pd

# 첫 번째 데이터프레임 생성
df1 = pd.DataFrame({
   'value1': [1, 2, 3, 4],
}, index=['A', 'B', 'C', 'D'])

# 두 번째 데이터프레임 생성
df2 = pd.DataFrame({
   'value2': [5, 6, 7, 8],
}, index=['B', 'D', 'E', 'F'])

# join을 사용하여 두 데이터프레임 병합
joined_df = df1.join(df2)

print(joined_df)

이 코드는 인덱스를 기준으로 df1df2를 병합합니다. 결과는 다음과 같이 나타납니다.

   value1  value2
A       1     NaN
B       2     5.0
C       3     NaN
D       4     6.0

3. concat

concat 함수는 여러 개의 데이터프레임을 축을 따라 병합하는 방법입니다. 두 개 이상의 데이터프레임을 병합할 때 유용합니다.

다음은 concat 함수의 사용법 예시입니다.

import pandas as pd

# 첫 번째 데이터프레임 생성
df1 = pd.DataFrame({
   'value': [1, 2, 3, 4]
})

# 두 번째 데이터프레임 생성
df2 = pd.DataFrame({
   'value': [5, 6, 7, 8]
})

# concat을 사용하여 두 데이터프레임 병합
concatenated_df = pd.concat([df1, df2])

print(concatenated_df)

이 코드는 열을 따라 df1df2를 병합합니다. 결과는 다음과 같이 나타납니다.

   value
0      1
1      2
2      3
3      4
0      5
1      6
2      7
3      8

이렇듯 pandas에는 데이터를 병합하기 위한 다양한 방법이 있습니다. merge, join, concat을 유연하게 사용하여 데이터 분석 작업을 효율적으로 진행할 수 있습니다.