파이썬 기초 : 데이터 결합(조인)하는 방법
데이터 분석을 하다 보면 서로 다른 데이터셋을 합쳐야 하는 경우가 많습니다. 이때 SQL의 JOIN과 유사한 개념을 파이썬에서도 사용할 수 있습니다. 이번 글에서는 파이썬에서 데이터 결합(조인)하는 방법을 초보자도 쉽게 이해할 수 있도록 설명하고, SQL 조인과의 차이점도 비교해보겠습니다.
1. 파이썬에서 데이터 조인이란?
파이썬에서 데이터 조인은 두 개 이상의 데이터프레임을 특정 기준(키, key)에 따라 합치는 과정을 의미합니다. 주로 pandas 라이브러리를 사용하여 데이터프레임을 병합(merge)하거나 결합(concatenate)할 수 있습니다.
SQL에서의 JOIN과 매우 유사하지만, 문법과 방식에서 차이가 있습니다.
2. SQL JOIN과 파이썬 pandas JOIN의 비교
비교 항목 | SQL JOIN | pandas JOIN |
사용 목적 | 두 개 이상의 테이블을 특정 키(column) 기준으로 결합 | 두 개 이상의 데이터프레임을 특정 키(column) 기준으로 결합 |
주요 함수 | INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN | merge(), join(), concat() |
키 지정 방식 | ON column_name | on='column_name' 또는 index 기반 |
기본 방식 | 관계형 데이터베이스에서 실행 | 메모리 상에서 pandas DataFrame을 다룸 |
3. pandas에서 조인(join)하는 방법
pandas에서는 merge(), join(), concat() 등의 함수를 사용하여 데이터를 조인할 수 있습니다.
3.1 merge() 함수 사용하기
merge() 함수는 SQL의 JOIN과 유사한 역할을 하며, 공통된 컬럼(키)을 기준으로 데이터프레임을 합칩니다.
import pandas as pd
# 임시 데이터 생성
df1 = pd.DataFrame({
'고객ID': [1, 2, 3],
'이름': ['김철수', '이영희', '박민수']
})
df2 = pd.DataFrame({
'고객ID': [1, 2, 4],
'구매상품': ['노트북', '스마트폰', '태블릿']
})
# 기본 inner join
merged_df = pd.merge(df1, df2, on='고객ID', how='inner')
print(merged_df)
출력 결과:
고객ID 이름 구매상품
0 1 김철수 노트북
1 2 이영희 스마트폰
how='inner'를 사용하면 SQL의 INNER JOIN과 같은 결과를 얻을 수 있습니다.
3.2 다양한 조인 방식
merge() 함수에서 how 매개변수를 변경하여 다양한 조인 방식을 사용할 수 있습니다.
how 값 | 설명 | SQL과 비교 |
inner | 공통된 키 값이 있는 데이터만 결합 (기본값) | INNER JOIN |
left | 왼쪽 데이터프레임을 기준으로 조인 | LEFT JOIN |
right | 오른쪽 데이터프레임을 기준으로 조인 | RIGHT JOIN |
outer | 모든 데이터를 포함하는 전체 조인 | FULL OUTER JOIN |
# LEFT JOIN
left_join_df = pd.merge(df1, df2, on='고객ID', how='left')
print(left_join_df)
3.3 join() 함수 사용하기
join() 함수는 인덱스를 기준으로 데이터프레임을 결합할 때 사용됩니다.
df1.set_index('고객ID', inplace=True)
df2.set_index('고객ID', inplace=True)
joined_df = df1.join(df2, how='inner')
print(joined_df)
3.4 concat() 함수 사용하기
concat()은 단순히 데이터프레임을 위/아래 혹은 좌/우로 연결할 때 사용됩니다.
concat_df = pd.concat([df1, df2], axis=0) # 세로 방향 결합
print(concat_df)
axis=0일 경우 세로로
axis=1일 경우 가로로
이번 글에서는 파이썬에서 pandas를 이용한 데이터 조인(결합) 방법을 소개했습니다. SQL과 pandas의 조인 방식이 유사하지만, 메모리 상에서 동작하는 방식이 다르다는 점을 이해하는 것이 중요합니다.
- merge(): 가장 많이 사용되는 조인 함수 (SQL의 JOIN과 유사)
- join(): 인덱스를 기준으로 데이터 결합
- concat(): 데이터 연결 (세로/가로 방향)