Python - Pandas를 이용한 데이터 병합

cosmosJ·2024년 2월 2일

데이터 분석

목록 보기
5/26
post-thumbnail

데이터 병합

데이터 병합이란, 2개 이상의 데이터 프레임을 하나로 병합하여 하나의 결과 집합을 만드는 것을 의미한다. (Join, Merge라고 표현)

데이터 병합에는 아래의 4가지 방식이 존재한다.

  • inner join
  • left join
  • right join
  • outer join

데이터 병합은 각각의 데이터의 구조에 따라 다른 방식으로 병합이 이루어져야 한다.

Inner Join

dataframe 간 조건 조건을 만족하는 데이터만을 합치는 것을 의미 (교집합 개념)

  • key 값이 서로 다른 dataframe에 공통으로 존재해야 한다.
  • 일치하는 key 값이 없으면 결과 테이블에 반영되지 않는다.

해당 그림에서 눈여겨보아야 하는 부분은 공통된 데이터 부분에서 같은 값을 공유하여 1:1로 매핑되어 있는 것을 확인할 수 있다. (One-to-One)

위의 그림과 다르게 왼쪽에 존재하는 데이터가 오른쪽에 존재하지 않는다. 그래서, 왼쪽과 오른쪽에 다 존재하는 데이터를 가지는 경우만 결과로 나타난다.

이렇게, 어느 한쪽에 동일한 데이터가 여러개 존재하여 조인되는 경우는 One-to-Many 라고 한다.

Outer join

외부 조인은 조건에 부합하지 않아도, 한쪽에 데이터가 있다면, 결합하는 방식 (합집합으로 생각하면 된다.)

  • key 값이 한쪽에만 있어도 결합 가능
  • 정보가 없는 측은 결손 처리(NaN)한다.
  • 양쪽의 Dataframe을 묶어서 가져온다.

left join

외부 조인의 일종으로 첫번째 dataframe을 기준으로 다른 dataframe을 결합한다.

  • 왼쪽의 key 값은 모두 반영하며, 오른쪽의 데이터가 없으면 NaN 처리한다.

Right join

right join은 left join과 동일하게 작동하며, 단지 기준 대상이 두번째 dataframe이 된다는 점만 다르므로, 설명은 생락한다.

Pandas의 데이터프레임 병합 구현 방법

  • Pandasmerge()

    • df.merge(다른 df, on='c', how='inner')
      • on : 결합 기준 (DB에서는 보통 PK)
      • how : 결합 방법 (inner, outer, left ...)
  • Dataframe의 join()

    • df.join(다른 df, on='c', how='inner')
      • on : 결합 기준 (DB에서는 보통 PK)
      • how : 결합 방법 (inner, outer, left ...)

join()merge() 굉장히 유사하나,

  • join() 은 인덱스를 기준으로 결합하는 구조이고,
  • merge() 는 컬럼을 기반으로 결합한다.

Pandas Index 기반 데이터 결합

pandas에서는 index를 기반으로 데이터 병합이 가능하다.

  • 만약, dataframe의 동일 index에 중복된 컬럼이 있으면, 두개의 컬럼을 모두 다른 이름으로 dataframe에 저장한다.

데이터 연결

데이터 병합과는 달리 서로 다른 dataframe 또는 Series을 그대로 연결(Concatenate)하여 결과 집합을 만들 수 있다.

  • 연결은 key 값을 사용하지 않고, 그냥 dataframe의 우측 또는 아래측에 해당 dataframe을 붙이는 방식으로 수행된다.

Pandas의 데이터프레임 연결 구현 방법

pd.concat(df1,df2, axis=, ...) 의 방식으로 사용하며, axis 값에 따라 연결 방향이 달라진다.

  • axis = 0 : 행 방향 연결 (상/하 연결)
  • axis = 1 : 열 방향 연결 (좌/우 연결)
    • 만약 One-To-One 방식으로 연결되지 않으면, 빈 부분은 NaN 처리된다.

데이터 병합과 연결 활용 예시

  • 데이터 병합
    • 서로 다른 성격의 데이터를 분석하기 위해 하나로 병합
      • ex. 제품 테이블 + 고객 테이블 = 매출 테이블
  • 데이터 연결
    • 여러 그룹으로 산재된 데이터 취합
      • ex. 월간 데이터 취합 = 년간 데이터

실습 코드

실습 코드는 아래의 링크를 참고한다.

profile
백엔드, Data Science, AI 분야 학습 내용을 정리하는 블로그입니다.

0개의 댓글