[파이썬기초] 데이터 합치기(병합)

2020. 4. 13. 13:40노트/Python : 프로그래밍

 

  • pandas.merge() : 하나 이상의 키를 기준으로 DataFrame의 로우를 합침 
  • join메서드 : 컬럼이 겹치지 않고, 완전히 같거나 유사한 색인구조를 가진 여러개의 DataFrame 객체를 합침
  • pandas.concat() : 하나의 축을 따라 객체를 이어 붙임 
  • combine_first 메서드 : 두 객체를 포개서 한 객체에서 누락된 데이터를 다른 객체에 있는 값으로 채움 

 

예제 데이터 생성

import pandas as pd 

dleft=pd.DataFrame({"key":['k0','k1','k2','k3'],
           "A":['a0','a1','a2','a3'],
           "B":['b0','b1','b2','b3']})

dright=pd.DataFrame({"key":['k2','k3','k4','k5'],
           "C":['c0','c1','c2','c3'],
           "D":['d0','d1','d2','d3']})

 

 

 

 

 

 

 

 

Merge() 함수 

# dleft와 dright를 key변수를 기준으로 merge 
# 공통으로 존재하는 key값에 대하여 자동으로 합쳐지고, 지정할 시 on="열이름"

pd.merge(dleft, dright) 
# dleft와 dright를 key변수를 기준으로 merge 
# 공통으로 존재하는 key값에 대하여 자동으로 합쳐지고, 지정할 시 on="열이름" 
pd.merge(dleft, dright , on="key") 

 

# how 옵션 
: inner(교집합) #default , outer(합집합) , left(차집합(왼쪽)), right(차집합(오른쪽))

# how 옵션 
# inner(교집합) #default , outer(합집합) , left(차집합(왼쪽)), right(차집합(오른쪽))
pd.merge(dleft, dright , on="key", how="outer") 

 

dright2=pd.DataFrame({"key2":['k2','k3','k4','k5'],
           "C":['c0','c1','c2','c3'],
           "D":['d0','d1','d2','d3']})
           
# 각표의 key값이 다른 경우 열이름을 바꿔주거나 아니면 left_on, right_on으로 key값 지정
pd.merge(dleft, dright2 ,left_on="key",right_on="key2", how="outer")

 

Concat() 함수 

 

# 데이터를 축 따라 이어붙이는 함수 

  • 데이터를 리스트로 묶어서 전달해야함 
  • Axis=1 로 두면? 좌우로 병합  

  • Axis=0 (default) 위아래로 병합 

  • 행, 열 라인에 맞지 않는 data들은 NaN처리  
  • ignore_index : 이어붙인 축의 색인을 유지하지 않고, range로 새로운 색인 생성 
  • keys: 계층적으로 index를 생성  
  • names : 계층의 이름을 지정하는 속성

 

pd.concat([dleft,dright])

pd.concat([dleft,dright], join="inner") # 교집합

pd.concat([dleft,dright], join="inner") # 합집합

pd.concat([dleft,dright],keys=['df1','df2']) # 계층적 색인

 

 

 

 

Combine_first 메서드 

 

두 데이터 셋의 색인이 일부 겹치거나, 전체가 겹치는 경우, 누락된 데이터를 인자로 넘긴 객체에 있는 값으로 채워넣음 

 

 

 

 

 

 

 

 

 

 

 

 

출처 

파이썬라이브러리를 활용한 데이터 분석(2판) 315p~ 333p