표 합치기
표를 합치는 데에는 기본적으로 두 개의 함수가 사용된다.
concat과 merge함수
이 두 함수의 차이점이라면
concat함수는 단순하게 표를 이어붙일 때 사용되고
merge함수는 특정 고유 키 값을 기준으로 병합할 때 사용된다.
concat
가령 df와 df_copy라는 함수를 합친다고 할 때
pd.concat([df, df_copy], sort=False) 를 입력하면
표가 위아래로 합쳐진다. (sort=False는 row기준으로 합침)
여기서 주의할 점은 concat함수는 합칠 함수들을 리스트로 받는다는 것이다.
그런데 이렇게 합치게 되면 아래와 같이 index가 엉망이 되어버린다.
따라서 인덱스를 재편해주기 위해
df_concat.reset_index(drop=True) 를 입력한다. (df_concat함수는 위 두 함수가 합쳐져 새로 만들어진 함수)
drop을 True로 두는 것은 새 index column이 생성되지 않게 하기 위해서이다.
반면 columns를 기준으로 표를 합칠 땐
pd.concat([df, df2], axis=1)
처럼 axis=1을 주면 된다.
merge
pd.merge(df,df_right,on='이름',how='left')
merge함수는 위와 같이 사용된다. 먼저 합칠 함수 두 개를 입력하고, 어떤 것(컬럼)을 기준으로 병합할지 입력한다. (여기서는 이름)
그리고 어떤 함수를 기준으로 병합할지도 입력한다. (여기서는 df함수)
따라서 왼쪽 함수 기준으로 데이터가 없는 건 nan값으로 표시된다.
만약 right함수 기준으로 병합하고 left함수보다 right함수가 데이터를 더 적게 가지고 있다면 그만큼 DataFrame의 사이즈가 줄게 된다.
how에는 inner혹은 outer 옵션값도 사용된다.
inner의 경우 교집합, outer의 경우 합집합이라 생각하면 된다.
즉 교집합은 둘 다 데이터가 있는 경우만 합치고 합집합은 병합할 경우 데이터가 없는 부분은 nan값으로 표시된다.
성질은 같지만 컬럼명이 같을 땐 아래와 같이 입력할 수 있다.
pd.merge(df,df_right, left_on='이름',right_on='성함', how='outer')
'데이터' 카테고리의 다른 글
파이썬 기초 - 전처리 과정에서 사용되는 다양한 함수(2) (0) | 2020.09.16 |
---|---|
파이썬 기초 - 전처리 과정에서 사용되는 다양한 함수 (0) | 2020.09.16 |
엑셀 기초 - 조건부서식 (2) (0) | 2020.09.15 |
엑셀 기초 - 조건부서식 (1) (0) | 2020.09.13 |
엑셀 기초 - sumifs함수와 averageifs함수 (0) | 2020.09.13 |