1) Concat (데이터 연결)
데이터프레임 두개를 단순히 연결할 때 사용한다. 단순히 두 개의 데이터 프레임을 세로로(혹은 가로로) 합치는 것이기 때문에 각 데이터프레임의 index도 그대로 중복되서 나타난다. 따라서 보통은 .reset_index(drop=True) 를 해준다.
# 고정된 난수 발생을 위해서 seed 설정
import numpy as np
np.random.seed(1)
# 3X2 정수로 구성된 매트릭스 생성
df1 = pd.DataFrame(np.random.randint(0,9,(3,2)),
index=['a','b','c'],
columns = ['one','two'])
Python
복사
# 2행 2열로 구성된 매트릭스 생성
df2 = pd.DataFrame(np.random.randint(0,9,(2,2)),
index=['a','b'],
columns=['three','four'])
Python
복사
# 열방향으로 연결
result_df = pd.concat([df1,df2], axis=1)
# 행방향으로 연결
result_df2 = pd.concat([df1,df2], axis=0)
Python
복사
2) Merge
•
Merge는 판다스의 메소드
•
merge는 컬럼을 기준으로 병합한다
merge는 두 데이터프레임을 공통된 항목을 기준으로 합치는 것이다. merge 의 방법에는 inner, left, right, outer 가 있다.
2-1) inner
두 데이터프레임의 교집합을 출력한다. 즉, 결합하는 데이터프레임의 공통된 항목에 대해서만 출력한다.
•
pd.merge(데이터프레임1, 데이터프레임2, on=’기준이 되는 칼럼’, how=’inner’)
2-2) left
두 데이터프레임의 교집합과 왼쪽 데이터프레임에는 있지만 오른쪽 데이터프레임에는 없는 정보도 포함하여 출력한다. → how=’left’
2-3) right
두 데이터프레임의 교집합과 오른쪽 데이터프레임에는 있지만 왼쪽 데이터프레임에는 없는 정보도 포함하여 출력한다. → how = ‘right’
2-4) outer
두 데이터프레임의 합집합을 출력한다. → how=’outer’
2-5) join 하는 칼럼 이름이 다를 경우
merged_df = pd.merge(df1, df2, left_on='학번', right_on='학생고유번호', how='inner')
Python
복사
이떄, 컬럼의 이름이 다르기 때문에 두 컬럼이 모두 생기게 된다.
# 두 컬럼 중 하나의 컬럼은 제거해준다.
merged_df.drop('학생고유번호', axis=1, inplace=True)
Python
복사
2-5) 인덱스를 기준으로 merge하기
data1 = {
'학번' : [1,2,3,4],
'이름' : ['아이유','김연아','홍길동','강감찬'],
'학과' : ['철학', '경영', '컴퓨터', '물리']
}
data2 = {
'학년':[2,4,3,1],
'학점':[1.5, 2.0, 4.1, 3.8]
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2, index=[1,2,4,5]) # 인덱스를 지정
# 두 데이터프레임을 인덱스를 기준으로 병합 : 동일한 인덱스를 가진 행만 추출됨
merged_df1 = pd.merge(df1, df2, left_index=True, right_index=True, how='inner')
# 왼쪽은 학번으로, 오른쪽은 인덱스를 기준으로 병합
merged_df2 = pd.merge(df1, df2, left_on='학번', right_index=True, how='inner')
Python
복사
3) 세개 이상의 데이터프레임을 merge
merge 는 한번에 두개의 데이터프레임만 합칠 수 있지만 합치고 다시 합치는 방식으로 계속 merge를 할 수 있다.
4) JOIN
join 은 기능적으로 merge 와 동일하다. 하지만, join 이 사용하기 더 번거로우므로 그냥 merge 를 사용하자!
•
join은 데이터프레임의 메소드
•
join은 인덱스를 기준으로 병합한다
df1.join(df2, on='c', how='inner') # inner join
Python
복사
5) 데이터 병합/연결 사용예시
•
병합은 서로 다른 성격을 가진 테이블을 합쳐 분석용을 위해 취합할 경우 많이 사용된다.
•
연결은 여러 그룹으로 산재된 데이터를 하나로 취합할 경우 사용된다. (월별 데이터 → 연간 데이터)