pandas | merge(), join(), concat() 함수 사용하기

2023. 5. 8. 21:54·TIL/python

pandas에서 데이터를 결합할 때 사용하는 merge(), join(), concat() 함수 사용 방법에 대해 정리해보려 한다.

 

다음과 같은 left, right 데이터를 사용한다.

left, right

 

merge() 함수를 사용하면 기본적으로 공통된 컬럼을 기준으로 inner join(내부 조인)을 수행한다. 

  • inner join(내부 조인): 양쪽 테이블에서 공통된 키값에 대해서만 데이터 결합

 

따라서 left, right의 공통된 컬럼 key를 기준으로 결합하며, b, c, e에 대해서 내부 조인을 수행한다.

left.merge(right)

merge

내부 조인이 아닌 전체 조인(outer join)을 하고 싶으면 merge() 함수의 매개변수 how에 'outer'를 전달해 주면 된다.

  • outer join(전체 조인): 공통되지 않은 값까지 모두 포함해 데이터 결합
left.merge(right, how='outer')

outer join

left, right 테이블의 모든 key 값 a~g에 대해 데이터가 결합되며, key 값에 해당하는 데이터가 없으면 NaN으로 나타난다.

 

left join, right join도 outer join과 마찬가지로 merge() 함수의 매개변수 how에 'left', 'right'를 전달해 주면 된다.

  • left join(왼쪽 조인): 왼쪽 테이블에 있는 키값을 기준으로 오른쪽 테이블을 가져다 붙이는 형태
  • right join(오른쪽 조인): 오른쪽 테이블에 있는 키값을 기준으로 왼쪽 테이블을 가져다 붙이는 형태
left.merge(right, how='left')
left.merge(right, how='right')

left join, right join

 

 

join() 함수는 인덱스를 기준으로 두 데이터 프레임을 결합한다.

그렇기 때문에 각 데이터 프레임에 공통된 컬럼이 존재하면 ValueError가 발생하므로, 아래 사진처럼 left, right 데이터 프레임에서 key 컬럼을 인덱스로 바꿔주었다.

left, right

 

join() 함수는 기본적으로 left join을 수행한다.

A.join(B)라고 작성하면, A를 기준으로 left join이 수행된다. 그러므로 어떤 데이터 프레임을 기준으로 하느냐에 따라 결과가 달라질 수 있기 때문에 코드 작성 시 유의해야 한다.

left.join(right)

join

left join 외 다른 join을 하고 싶으면 merge() 함수와 마찬가지로 how 매개변수에 결합 방법을 전달하면 된다.

left.join(right, how='inner')

inner

left.join(right, how='outer')
left.join(right, how='right')

outer join, right join

 

 

concat() 함수는 pd.concat() 형식으로 사용하며, 괄호 안에 결합할 데이터들을 리스트 형태 전달하면 행 기준(axis=0)으로 결합한다.

merge, join은 컬럼 기준, 즉 열 방향으로 결합했다면, concat은 행 방향으로 결합한다.

pd.concat([left, right])

concat(axis=0)

merge, join처럼 열 방향으로 결합하고 싶으면 매개변수 axis=1을 전달하면 된다.

pd.concat([left, right], axis=1)

concat(axis=1)

 

데이터: https://github.com/musthave-ML10/data_source

반응형
저작자표시 (새창열림)
'TIL/python' 카테고리의 다른 글
  • pandas | str.split()을 사용하여 하나의 컬럼을 여러개로 나누기
  • pandas | describe()를 사용하여 object 데이터까지 확인하기
  • python | 파이썬 이진 탐색 라이브러리 bisect 사용하기
  • python | collections.Counter 사용하기
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (242)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (43)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
pandas | merge(), join(), concat() 함수 사용하기
상단으로

티스토리툴바