0Pricing
Learn AI with Python · 강의

고급 병합 및 결합

시간 기반 결합을 위해 how, on, left_on/right_on, suffixes와 함께 pd.merge() 및 merge_asof를 사용합니다.

고급 병합 및 결합은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

DataFrames 결합

pd.merge는 공유 키를 기준으로 두 DataFrames를 결합하며, SQL JOIN과 정확히 같은 방식입니다. 관계형 데이터 작업을 위해 how 옵션을 익히는 것이 필수적입니다.

import pandas as pd
left = pd.DataFrame({"id": [1, 2, 3], "name": ["a", "b", "c"]})
right = pd.DataFrame({"id": [2, 3, 4], "score": [90, 80, 70]})

내부 조인(기본값)

how="inner"는 BOTH 데이터 프레임에 존재하는 키만 유지합니다. 기본값입니다.

print(pd.merge(left, right, on="id", how="inner"))
#    id name  score
# 0   2    b     90
# 1   3    c     80

왼쪽 조인

how="left"는 왼쪽 데이터 프레임의 모든 행을 유지하며, 일치하지 않는 오른쪽 열은 NaN이 됩니다. 분석에서 가장 흔히 사용하는 조인입니다.

print(pd.merge(left, right, on="id", how="left"))
#    id name  score
# 0   1    a    NaN
# 1   2    b   90.0
# 2   3    c   80.0

외부 조인

how="outer"는 양쪽의 모든 키를 유지하고, 빈 부분을 NaN으로 채웁니다. 레코드 전체의 합집합을 확인할 때 사용합니다.

print(pd.merge(left, right, on="id", how="outer"))
# includes id 1 (no score) and id 4 (no name)

서로 다른 열 이름으로 조인하기

키 열의 이름이 서로 다르면 on 대신 left_on과 right_on을 사용합니다.

r2 = right.rename(columns={"id": "user_id"})
print(pd.merge(left, r2, left_on="id", right_on="user_id"))

겹치는 열을 위한 접미사

두 데이터 프레임에 키가 아닌 동일한 이름의 열이 있으면 pandas가 _x와 _y를 붙입니다. 명확하게 표시하려면 suffixes로 재정의할 수 있습니다.

a = pd.DataFrame({"id": [1], "val": [10]})
b2 = pd.DataFrame({"id": [1], "val": [99]})
print(pd.merge(a, b2, on="id", suffixes=("_old", "_new")))

indicator 열

indicator=True를 사용하면 각 행의 출처를 보여 주는 _merge 열이 추가됩니다. 출처는 왼쪽에만 있음, 오른쪽에만 있음, 또는 양쪽에 있음으로 표시됩니다. 조인을 감사할 때 매우 유용합니다.

print(pd.merge(left, right, on="id", how="outer", indicator=True))
# _merge tells you where each row came from

조인 문제 진단

indicator를 기준으로 필터링하면 일치하지 않는 키를 빠르게 찾을 수 있습니다. 이는 데이터가 조용히 누락되는 흔한 원인입니다.

m = pd.merge(left, right, on="id", how="outer", indicator=True)
print(m[m["_merge"] != "both"])   # rows that did not match

시간 조인을 위한 merge_asof

pd.merge_asof는 정확히 일치하는 키가 아니라 가장 가까운 키를 기준으로 결합합니다. 각 거래를 직전에 나온 최신 호가와 연결하는 것처럼 시계열을 정렬하는 데 특화되어 있습니다. 두 프레임 모두 키를 기준으로 정렬되어 있어야 합니다.

trades = pd.DataFrame({"time": [1, 3, 7], "price": [10, 11, 12]})
quotes = pd.DataFrame({"time": [0, 2, 5], "bid": [9, 10, 11]})
print(pd.merge_asof(trades, quotes, on="time"))

merge_asof 방향

기본적으로 merge_asof는 BACKWARD를 확인합니다(해당 키보다 작거나 같은 키 중 가장 최신 키). direction="forward" 또는 "nearest"를 사용하면 일치 규칙을 변경할 수 있습니다.

print(pd.merge_asof(trades, quotes, on="time", direction="nearest"))

적절한 조인 선택하기

일치하는 항목만 유지하려면 내부 조인을, 기본 테이블을 보강하려면 왼쪽 조인을, 전체 합집합이 필요하면 외부 조인을, 시간에 맞춘 근사 키 조인에는 merge_asof를 사용합니다.

확인 문제

조인 지식을 확인해 보십시오.

복습

병합 도구 모음:

  • how=의 내부 / 왼쪽 / 외부 설정으로 어떤 키를 유지할지 제어합니다
  • 키 열에는 on과 left_on/right_on을 사용합니다
  • suffixes로 겹치는 이름을 구분합니다
  • indicator=True로 행의 출처를 확인합니다
  • 가장 가까운 키를 기준으로 시간 조인을 할 때는 pd.merge_asof를 사용합니다(먼저 정렬해야 합니다)

자주 묻는 질문

“고급 병합 및 결합” 강의는 무료인가요?

네 — “고급 병합 및 결합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

“고급 병합 및 결합”에서 뭘 배우나요?

시간 기반 결합을 위해 how, on, left_on/right_on, suffixes와 함께 pd.merge() 및 merge_asof를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“고급 병합 및 결합” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. GroupBy와 집계
  2. 피벗 테이블과 교차 집계
  3. 고급 병합 및 결합
  4. Pandas의 시계열
← Learn AI with Python(으)로 돌아가기