본문으로 건너뛰기
실습하기

DataFrame 병합과 조인

실제 데이터 분석에서는 하나의 테이블만으로는 충분한 정보를 얻기 어려운 경우가 많습니다.

예를 들어 한 DataFrame에는 고객 정보가, 다른 DataFrame에는 해당 고객의 주문 내역이 들어 있을 수 있습니다.

이때 두 데이터를 결합해야만 고객별 주문 패턴이나 매출 기여도를 분석할 수 있습니다.

Pandas에서는 이를 위해 mergejoin이라는 유용한 기능을 제공합니다.


Merge와 Join 메서드

Pandas는 여러 테이블을 효율적으로 결합할 수 있는 메서드를 제공합니다.

.merge()

두 DataFrame에서 기준 열(key)의 값이 일치하는 행을 기준으로 결합합니다.

SQL의 INNER JOIN, LEFT JOIN, RIGHT JOIN, OUTER JOIN과 비슷한 방식으로 동작합니다.

merge 예시
pd.merge(df_customers, df_orders, on="customer_id", how="inner")

.join()

인덱스 또는 지정한 키 열을 기준으로 한 DataFrame에 다른 DataFrame의 열을 추가합니다.

보통 인덱스를 기준으로 데이터를 결합할 때 사용합니다.

join 예시
df_customers.join(df_orders.set_index("customer_id"), on="customer_id")

자주 쓰는 조인 유형

데이터를 결합할 때는 어떤 행을 유지할지에 따라 조인 방식을 선택해야 합니다.

Pandas의 pd.merge()는 SQL과 동일한 방식으로 다양한 조인을 지원합니다.

조인 유형설명
Inner양쪽 DataFrame에서 기준 열의 값이 일치하는 행만 유지합니다. 불필요한 데이터는 제외하고, 교집합만 분석할 때 적합합니다.
Left왼쪽 DataFrame의 모든 행을 유지하고, 오른쪽 DataFrame에서 일치하는 값만 가져옵니다. 오른쪽에 해당 값이 없으면 NaN으로 채워집니다.
Right오른쪽 DataFrame의 모든 행을 유지하고, 왼쪽 DataFrame에서 일치하는 값만 가져옵니다. 왼쪽에 해당 값이 없으면 NaN으로 채워집니다.
Outer양쪽 DataFrame의 모든 행을 유지하며, 일치하지 않는 값은 NaN으로 채웁니다. 두 테이블의 전체 데이터를 결합해 보고 싶을 때 유용합니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!