feat. 데이터 프레임 합치기(Join, Merge) / Concat
안녕하세요, 브래드입니다.
오늘은 파이썬으로 데이터 전처리하기 일곱 번째 시간으로 각각의 데이터 프레임을 합치는 작업을 함께 공부해보아요.
Join은 두 개의 데이터 프레임을 겹치는 인덱스(Index)를 기준으로 합치는 것을 말합니다.
Join의 종류는 다음과 같이 Inner Join, Left Join, Right Join, Outer Join로 4가지가 존재합니다.
Join의 기본 사용법은 다음과 같습니다.
df.1 join(df2, on='키 인덱스', how='조인 방법', sort='정렬 여부')
테이블로 각각의 Join을 살펴보면 이해가 더 쉬울 것이라 생각합니다.
먼저 Inner Join은 두 테이블에서 모두 겹치는 인덱스인 0을 가져오고, 각각의 칼럼들을 가져온 것을 확인할 수 있습니다.
Left Join은 0과 1을 가져오고, Right Join은 0과 2를 가져오는 것을 알 수 있습니다. Outer Join은 두 테이블의 모든 인덱스를 가져왔습니다.
df1과 df2에서 겹치는 컬럼인 id를 기준으로 두 데이터 프레임을 합치려 했더니 오류가 발생했습니다.
그 이유는 df1에서 해당하는 즉, 여기서는 id값이 df2에서는 인덱스 값으로 있어야 하기 때문입니다.
따라서 이러한 경우에는 키로 지정할 열을 인덱스를 새로 지정해야 합니다.
set_index('키로 지정할 열')
앞선 예시에서는 id를 키로 지정하려 했으므로 df2.set_index('id')를 출력하여 id를 키로 하여 인덱스를 새로 지정해줍니다.
set_index를 진행한 식을 Join 구문에 넣어 다음과 같이 df1과 df2를 합쳐줄 수 있습니다.
Merge는 두 개의 데이터 프레임을 겹치는 값을 기준으로 합치는 것입니다.
기능적으로는 Join과 완전히 같으며, 앞서 Join에서 번거로웠던 작업인 겹치는 인덱스를 따로 지정해주는 작업이 없기 때문에 Join보다는 Merge 활용도가 높습니다.
즉, Merge에서는 단지 두 개 이상의 겹치는 칼럼만 존재하면 됩니다.
기본 사용법은 다음과 같습니다.
pd.merge(df1, df2, on='키 칼럼', how='조인 방법', sort='정렬 여부')
Concat은 두 개의 데이터 프레임을 단순하게 붙이는 방법입니다.
행 방향 혹은 열 방향으로 데이터 프레임을 붙일 수 있으며, 행 방향은 axis=0으로 열 방향은 axis=1을 사용합니다.
기본 사용법은 다음과 같습니다.
pd.concat([df1, df2], axis='붙이는 방향')
위의 예시에서는 pd.concat([df1, df2], axis=0)을 출력하여 행 방향으로 두 데이터 프레임을 붙인 모습입니다.
지금까지 파이썬으로 데이터 전처리하기 일곱 번째 시간으로 데이터 프레임을 합치는 방법에 대해 함께 공부해보았습니다.
다음 시간에도 이어서 pandas 내에서 여러 가지 데이터 전처리하는 방법을 함께 알아보아요.
브래드였습니다. 감사합니다.