-
[python] 파이썬을 이용한 빅 데이터 실습 9 - 데이터 통합Languages/python 2021. 11. 1. 14:53반응형
컬럼 값을 기준으로 합치기
merge()
-인자값
두 개의 데이터프레임에
동일한 컬럼명으로 merge를 하고 싶은 경우
-> on 인자에 컬렴명 사용
두 개의 데이터프레임에
서로 다른 컬럼명으로 merge를 하고 싶은 경우
->left_on 과 right_on 에
각각 해당하는 컬럼명 기입
merge()
인자 옆에 적힌 값 = 인자의 기본값
기본값이 없는 경우 함수 사용할 때
인자값을 꼭 입력해야 함. 미입력시, 오류 발생
기본값이 있는 경우 인자값을 입력하지 않으면, 기본값으로 함수가 실행됨
예시)
DataFrame.merge(left, right, how='inner', on=None, left_on=None, right_on=None, ...
how 부터는 없어도 함수 동작은 가능함
how 인자
어떤 컬럼의 값을 기준으로 두 개의 데이터프레임을 하나의 데이터프레임으로 합치고자 할 때,
merge() 라고 하는 함수를 사용하게 된다.
4개의 인자값이 존재한다
inner 방식과 outer 방식으로 구분할 수 있음
->> outer 방식
left outer
right outer
fully outer
각각에 해당하는 인자의 값들은 inner, left, outer로 인자를 지정해 줄 수 있다.
inner 방식
특정 컬럼의 값이 같은 경우에만 결과에 포함되는 방식
outer 방식
left outer join의 결과는
inner 방식의 결과 + inner 방식의 결과에는 포함되지 않지만,
left에 있는 데이터는 모두 포함
right outer join의 결과는
inner 방식의 결과 + inner 방식의 결과에는 포함되지 않지만,
right에 있는 데이터는 모두 포함
fully outer join의 결과는
inner 방식의 결과 + inner 방식의 결과에는 포함되지 않지만,
left, right에 있는 데이터는 모두 포함
[실습]
import pandas as pd from pandas import Series, DataFrame
#샘플 데이터 생성 df1 = DataFrame([['홍길동',23,'남'],['이순신',55,'남'], ['신사임당',48,'여']], columns = ['이름','나이','성별']) df2 = DataFrame([['홍길동','터미네이터',5],['홍길동','비긴어게인',2], ['홍길동','살인의추억',4], ['신사임당','비긴어게인',5], ['장보고','살인의추억',3]], columns = ['이름','영화','평점'])
df1
df2
pd.merge(df1,df2, on='이름',how='inner')
df1.merge(df2, on='이름',how='inner')
df1.merge(df2, on='이름',how='left')
df1.merge(df2, on='이름',how='right')
df1.merge(df2, on='이름',how='outer')
concat
object(objs) 인자
합치고자 하는 데이터들을 리스트 [] 형태로 전달
axis 인자
데이터프레임에서 제공하는 함수들이
공통적으로 많이 제공하는 인자
함수의 동작 방향을 지정
행(row) 방향으로 수행 : axis = 0 -> 기본값으로 생략 가능
열(column) 방향으로 수행 : axis = 1
join 인자
inner - 두 개의 데이터에 모두 있는 경우에만 출력
outer - 둘 중에 한 군데만 있어도 출력
ignore_index = True 인자(기본값 False)
원본에 있는 인덱스를 무시하지 말고 그냥 그대로 가져옴을 의미
df1 = DataFrame([['홍길동',23,'남'],['이순신',55,'남']], columns = ['이름','나이','성별']) df2 = DataFrame([['신사임당',48,'여'], ['장보고',22,'남']], columns = ['이름','나이','성별'])
pd.concat([df1,df2], axis=0, ignore_index = True)
concat(axis=1)
서로 다른 컬럼을 가진 데이터프레임들을 로우 인덱스의 값을 기준으로 합치고 싶은 경우
# 샘플 데이터 df1 = DataFrame([[23,'남'],[55,'남'], [48,'여']], columns = ['나이','성별'], index = ['홍길동','이순신','신사임당']) df2 = DataFrame([['서울',3], ['경기', 1]], columns = ['주소','학년'], index = ['홍길동','신사임당'])
pd.concat([df1,df2], axis=1, join='inner')
반응형'Languages > python' 카테고리의 다른 글
[python] 파이썬을 이용한 빅 데이터 실습 10 - 데이터 정렬 (0) 2021.11.01 [python] 파이썬을 이용한 빅 데이터 실습 7 - DataFrame , 계층색인 (0) 2021.11.01 [python] 파이썬을 이용한 빅 데이터 실습 6- DataFrame (0) 2021.10.30 [python] 파이썬을 이용한 빅 데이터 실습 5- DataFrame (0) 2021.10.30 [python] 파이썬을 이용한 빅 데이터 실습 4- DataFrame (0) 2021.10.30