[파이썬기초] 데이터 합치기(병합)
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
'노트 > Python : 프로그래밍' 카테고리의 다른 글
[텐서플로우] 선형회귀분석(Linear Regression) 기본 구조 파이썬 코드 (0) | 2020.04.14 |
---|---|
[파이썬] 데이터변형 | 정규화와 표준화 (0) | 2020.04.14 |
[파이썬기초] 문자열(str) 데이터 다루기 (0) | 2020.04.13 |
[파이썬기초] 시계열 데이터 생성하기 (0) | 2020.04.13 |
[토픽모델링] LSA (Latent Similarity Analysis)를 이용한 토픽모델링 파이썬 코드 (1) | 2020.04.09 |