데이터 결합
이번 포스팅은 데이터를 결합하기 위한 함수들을 사용해 보겠습니다. 데이터를 결합하는 방법에는 단순 결합 (Concat, Append)와 key를 기준으로 연결하는 조인(Join, Merge)이 있습니다.
먼저, 단순 연결부터 살펴보겠습니다.
단순 연결
단순 연결은 2개 이상의 데이터프레임을 열 혹은 행 방향으로 그대로 붙이는 것입니다. 아래의 함수를 이용하여 결합할 수 있습니다.
pandas.concat(objs, axis=0, ignore_index=False)
- objs: concat을 실행할 객체의 리스트
- axis: 0이면 수직으로 결합, 1이면 수평으로 결합
- ignore_index: True이면 기존 index를 무시하고 0부터 시작하는 정수로 재설정
axis가 0, 1인 경우를 잘 알고 있어야 될 것 같네요! 그럼 코드를 통해 확인해 보겠습니다.
먼저 아래와 같이 데이터프레임을 만든 후, 두 데이터프레임을 연결해 보았습니다. axis는 default 값으로 0이므로 수직으로 두 데이터프레임이 결합되었습니다.
또한, 2번째 결합에는 ignore_index를 True로 설정하면서 인덱스들이 재설정되었음을 확인할 수 있습니다.
주의할 점은 objs 속성에 리스트를 넣어주어야 한다는 점입니다. 저는 리스트로 안 넣어준 경험이 많아서 여러분은 실수하지 말라고 강조해 봅니다 ㅎㅎ
만약, 결합하는 두 데이터프레임이 다른 컬럼을 가지고 있을 때는 어떤 결과가 나올까요? 확인해 보겠습니다.
위와 같이 값이 없는 컬럼 데이터는 NaN으로 채워짐을 알 수 있습니다.
axis가 1일 때, 즉 수평으로도 결합을 해 보도록 하겠습니다.
아래는 데이터프레임과 Series 간의 행 인덱스를 기준(axis=1)으로의 결합을 나타내고 있습니다. Series의 데이터 1개 이고, HR1 데이터프레임의 데이터는 2개입니다. 따라서 Series의 행 인덱스 1과 DataFrame의 행 인덱스 1이 서로 결합하여 급여 부분에 데이터가 존재하고, DataFrame의 행 인덱스 0은 데이터가 없어 NaN 값이 표기됩니다.
2. 조인
이번에는 조인을 알아보겠습니다.
조인은, 연결할 두 데이터프레임이 동시에 가지고 있는 특정 컬럼(key)의 값을 기준으로 두 개 이상의 데이터프레임을 결합하여 하나의 데이터프레임으로 만드는 것입니다. 동시에 가지고 있는 컬럼이란, 컬럼명이 같은 것이 아닌 컬럼이 가질 수 있는 값의 집합의 도메인이 같다는 것을 의미합니다.
조인은 아래와 같이 2가지 방법으로 만들 수 있습니다.
DataFrame.join(other, on=None, how='left', lsuffix=", rsuffix=", sort=False)
- DataFrame: 결합의 기준이 되는 데이터프레임으로 left DataFrame
- other: 결합의 대상이 되는 데이터프레임으로 right DataFrame
- on: key 컬럼의 이름 (어떤 key를 가지고 조인할 것인지)
- how: {'left', 'right', 'inner', 'outer'}, 조인의 수행 방식
- lsuffix/rsuffix: 결합한 데이터프레임에서 왼쪽/오른쪽 데이터프레임의 컬럼명에 사용할 접미사
- sort: 키 값을 기준으로 정렬할지 여부
DataFrame.merge(right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes('_x', '_y')
- DataFrame: 결합의 기준이 되는 데이터프레임으로 left DataFrame
- right: 결합의 대상이 되는 데이터프레임으로 right DataFrame
- how: {'left', 'right', 'inner', 'outer'}, 조인의 수행 방식
- on: key 컬럼의 이름 (어떤 key를 가지고 조인할 것인지)
- left_on/right_on: 두 테이블에서 key 컬럼명이 다를 때 'on' 대신 각각 지정
- sort: 키 값을 기준으로 정렬할지 여부
- suffixes: 결합한 데이터프레임에서 왼쪽/오른쪽 데이터프레임의 컬럼명에 사용할 접미사를 왼쪽-오른쪽 순으로 지정
위 함수를 사용하여 코드를 통해 확인해 보겠습니다.
출처
[데싸라면, 빨간색 물고기, 자투리코드] 파이썬 한권으로 끝내기: 데이터분석전문가(ADP) + 빅데이터분석기사 실기대비, 시대고시기획(2022), p43-48)
'Data Science > Pandas' 카테고리의 다른 글
날짜 데이터 핸들링 (datetime) (0) | 2023.08.30 |
---|---|
데이터 재구조화 (pivot_table, melt) (0) | 2023.08.30 |
데이터 정렬 (0) | 2023.08.30 |
조건식을 이용한 데이터 탐색 및 결측값 다루기 (0) | 2023.08.29 |
Pandas를 이용한 Data Handling (0) | 2023.08.29 |