Ch8. 데이터 준비하기: 조인, 병합, 변형

merge, join

계층적 색인 : 축에 대해 다중 색인 단계를 지정할 수 있도록 해준다. > 높은 차원의 데이터를낮은 차원의 형식으로 다룰 수 있게 해주는 기능

계층적으로 색인된 객체는 데이터의 부분집한을 부분적 색인으로 접근할 수 있다 하위 계층의 객체를 선택하는 것도 가능 ex) data.loc[ :, 2] : 'a-2' , 'c-2', 'd-2'의 객체가 나온다

unstack 메서드를 사용해서 데이터를 새롭게 배열할 수 있고, unstack 반대 작업은 stack 메서드로 수행 가능 (unstack 으로 하면 배열이 행렬도 정렬된다)

DataFrame 에서는 두 축 모두 계층적 색인을 가질 수 있다. index.names 메서드는 로우 인덱스 이름이, columns.names는 칼럼 인덱스 이름을 붙이게 된다

swaplevel 은 넘겨받은 두개의 계층 번호나 이름이 두바뀐 새로운 객체를 반환(데이터는 변경되지 않는다) sort_index.(level= ) 할 때, level은 index label을 가르킨다. ex) level=0일때는, index 번호가 0인것 기준으로 정렬된다. 계층별로 (sum)합할 수 도 있다.

데이터 합치기

  • pandas.merge는 하나 이상의 키를 기준으로 DataFrame의 로우를 합친다. SQL이나 다른 관계형 데이터베이스의 join 연산과 유사

  • pandas.concat은 하나의 축을 따라 객체를 이어붙인다

  • combile_first 인스터스 메서드는 두 객체를 포개서 한 객체에서 누락된 데이터를 다른 객체에 있는 값으로 채울 수 있도록 한다

merge를 하면 포함되지 않는 객체는 출력되지 않는다. inner join 과 비슷하다. pd.merge( 데이터1, 데이터2, on = '합칠 key' ) on을 써주지 않아도 합쳐지긴 하지만 on을 쓰는것이 좋다. 만약 중복된 컬럼 이름이 없으면 지정해주면 된다. ex) pd.merge (데이터1, 데이터2 , left_on='데이터 1에서 합칠 칼럼', right_on='데이터 2에서 합칠 칼럼')

df1에 index 3- c, df2에 index 2-d 가 서로 일치하는 것이 없기 때문에 df1, df2 merge한 결과에는 나오지 않는다.

또는, how 인자로 'left', 'right', 'inner', 'outer'를 넘겨서 조인을 수행할 수 있다.

색인 병합하기 : left_index=True 혹은 right__index=True옵션을 지정해서 해당 색인을 병합키로 사용할 수 있다. 병합은 기본적으로 교집합을 구하지만 외부 조인을 실행해서 합집합을 구할 수도 있다 ex) pd.merge(데이터1, 데이터2, left_on='key', right_index=True, how='outer')

join 메서드 사용 : 컬럼이 겹치지 않으며 완전히 같거나 유사한 색인 구조를 가진 여러개의 DataFrame 객체를 병합할 때 사용. ex1) 데이터1.join([데이터2, 데이터3]) : 데이터1에 맞춰서 데이터 2, 데이터 3이 inner join 된다. 데이터1.join([데이터2, 데이터3], how ='outer') : 데이터1,2,3 full outer join 된다.

축 따라 이어붙이기 = 이어붙이기 , 연결, 적층이라고도 한다. NumPy는 ndarray를 이어붙이는 concatenate함수(concat)를 제공한다

  • 연결하는 두 객체의 색인이 서로 다르면, 결과는 합집합 or 교집합? > join 매서드

  • 합쳐진 결과에서 합쳐지기 전 객체의 데이터를 구분할 수 있는가 > verify_integrity

  • 어떤 축으로 연결할 것인지 고려해야 하는가 > keys, level, name, ignore_index

isnull : ex) np.where(pd.isnull(a), b, a) : a가 null인 함수를 b의 값으로 채운다.

표 형식의 데이터를 재배치하는 연산 : 재형성 또는 피벗 ex) stack , unstack

pivot : 긴 형식에서 넓은 형식으로 피벗하기 (책 참고. p.338~342) panda.melt : 넓은 형식에서 긴 형식으로 피벗. key 칼럼을 그룹 구분자로 사용할 수 있고, 다른 컬럼을 데이터값으로 사용할 수 있다. 반드시 구분자 지정해야함!

Last updated

Was this helpful?