Skip to main content

데이터 합치기

실습 데이터

  • 엑셀에서 특정 시트만 불러올 수 있음(sheet_name)
  • 특정 열을 인덱스로 설정할 수 있음(index_col=0: 0번째 열을 인덱스로 설정)
df_user = pd.read_excel('merge.xlsx', sheet_name='user')
df_purchase = pd.read_excel('merge.xlsx', sheet_name='purchase')
df_2023 = pd.read_excel('merge.xlsx', sheet_name='data_2023', index_col=0)
df_2024 = pd.read_excel('merge.xlsx', sheet_name='data_2024', index_col=0)

행(Row) 기준 합치기

  • axis=0 (기본값): 위-아래로 합침.
  • 두 DataFrame의 컬럼 이름이 같아야 의미 있음.
pd.concat([df_2023, df_2024])
  • concat 후, 인덱스가 중복될 수 있음 (e.g., 202301, 202401...)
  • 기존 인덱스를 무시하고 0, 1, 2, ... 순서로 새 인덱스 부여.
pd.concat(
[df_2023, df_2024],
ignore_index=True
)

열(Column) 기준 합치기

  • axis=1: 좌-우로 합침.
  • 두 DataFrame의 인덱스(Index)를 기준으로 정렬/결합됨.
  • 인덱스가 한쪽에만 존재하면, 해당 행의 반대쪽 데이터는 NaN (결측치) 처리됨.
pd.concat([df_2023, df_2024], axis=1)

컬럼 값을 기준으로 합치기

  • pd.merge(): SQL에서 JOIN과 같음
  • concat과 달리, 공통된 '키(Key)' 컬럼을 기준으로 데이터를 병합.
  • user_id 컬럼의 값을 기준으로 df_user (고객 정보)와 df_purchase (구매 내역)을 결합
pd.merge(df_user, df_purchase, on='user_id')
  • 내부(inner) 조인: 양쪽에 모두 값이 있는 경우만 결합(기본)
pd.merge(df_user, df_purchase, on='user_id', how='inner')

외부 조인

  • 왼쪽 표에 오른쪽 표를 붙임(오른쪽 표에 해당하는 행이 없으면 빈 칸)
pd.merge(df_user, df_purchase, on='user_id', how='left')
  • 오른쪽 표에 왼쪽 표를 붙임(왼쪽 표에 해당하는 행이 없으면 빈 칸)
pd.merge(df_user, df_purchase, on='user_id', how='right')
  • 어느 쪽이든 표에 있으면 모두 포함(다른 표에 해당하는 행이 없으면 빈 칸)
pd.merge(df_user, df_purchase, on='user_id', how='outer')

키 컬럼 이름이 다를 때

  • 구매 데이터를 복사하여 user_id 컬럼을 customer_id로 바꿈
df_purchase_new = df_purchase.copy()
df_purchase_new.columns = ['purchase_id', 'customer_id', 'item']
df_purchase_new
  • left_onright_on으로 키 컬럼을 지정
pd.merge(df_user, df_purchase_new, left_on='user_id', right_on='customer_id')

퀴즈

사용자 정보 입력
퀴즈를 시작하기 전에 이름과 소속을 입력해주세요.

Q&A