DataFrame 병합과 조인
실제 데이터 분석에서는 하나의 테이블만으로는 충분한 정보를 얻기 어려운 경우가 많습니다.
예를 들어 한 DataFrame에는 고객 정보가, 다른 DataFrame에는 해당 고객의 주문 내역이 들어 있을 수 있습니다.
이때 두 데이터를 결합해야만 고객별 주문 패턴이나 매출 기여도를 분석할 수 있습니다.
Pandas에서는 이를 위해 merge
와 join
이라는 유용한 기능을 제공합니다.
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 강의를 등록해 주세요!