오늘은 파이썬 패키지인 pandas의 dataframe을 Join 하는 방법을 알아보고자 한다.
DBMS의 대표 프로그램인 SQL에서 가장 많이 사용되는 Join을 파이썬에서는 어떻게 처리할 수 있는지 간단히 알아보자.
[0. Pandas 불러온 후 데이터 프레임 만들기]
Join 함수를 쓰기전, 파이썬의 pandas 패키지를 불러오고 데이터 프레임을 만들어보자.
(Join을 걸기 위해서는 아래에 쓰여 있는 바와 같이 같은 칼럼인 key값 이 반드시 필요하다.)
1
2
3
4
5
6
7
|
import pandas as pd
# 0. DataFrame 만들기
# 데이터 프레임들을 조인하기 위해서는 같은 칼럼이 필요함
L_df = pd.DataFrame({'key':['A','B','C','D'],'x':[1,2,3,4]})
R_df = pd.DataFrame({'key':['B','D','E','F'],'y':[5,6,7,8]})
|
cs |
위에서 생성한 데이터프레임을 조회해보자.
1
2
3
4
5
6
7
8
9
10
11
12
|
>>> print(L_df)
key x
0 A 1
1 B 2
2 C 3
3 D 4
>>> print(R_df)
key y
0 B 5
1 D 6
2 E 7
3 F 8
|
cs |
[1. pandas에서 Inner Join 사용방법]
Inner Join은 기준이 되는 데이터 프레임에서 비교하려는 데이터 프레임과
같은 key 값들'만' 조회하는 방법이다.
1
2
3
4
|
# 1. Inner Join
# 기준이 되는 같은 칼럼들에서 '중복되는 값 들만' 조회하는 방법
# SQL에서 from 절에서의 같은 칼럼들을 조회하는 방법과 동일
inner_join = pd.merge(L_df,R_df,on='key',how='inner')
|
cs |
위에서 생성한 조인의 결과값을 조회해보자.
1
2
3
4
|
>>> print(inner_join)
key x y
0 B 2 5
1 D 4 6
|
cs |
[2. pandas에서 Left Join 사용방법]
Left Join은 기준이 되는 좌측 데이터 프레임의 모든 값들을 보여주되,
비교하고자 하는 데이터 프레임에 기준이 되는 데이터 프레임과의 중복 key 값이
존재한다면 이를 보여주는 조건식이다.
(만약 비교하고자 하는 데이터 프레임에 값들이 없다면 Null로 표시된다.)
1
2
3
4
5
|
# 2. Left Join
# 기준이 되는 '왼쪽' 데이터 프레임의 모든 값을 추출하고
# 비교하려는 다른 데이터 프레임에서 '중복되는 값'은 나타내되
# 중복되지 않는 값들은 Null 값으로 표시
Left_join = pd.merge(L_df,R_df,on='key',how='left')
|
cs |
위에서 생성한 조인의 결과값을 조회해보자.
1
2
3
4
5
6
|
>>> print(Left_join)
key x y
0 A 1 NaN
1 B 2 5.0
2 C 3 NaN
3 D 4 6.0
|
cs |
[3. pandas에서 Right Join 사용방법]
Right Join은 Left Join과 마찬가지로 기준이 되는 우측 데이터 프레임의 모든 값들을 보여주되,
비교하고자 하는 데이터 프레임에 기준이 되는 데이터 프레임과의 중복 key 값이
존재한다면 이를 보여주는 조건식이다.
(만약 비교하고자 하는 데이터 프레임에 값들이 없다면 Null로 표시된다.)
1
2
3
4
5
|
# 3. Right Join
# 기준이 되는 '오른쪽' 데이터 프레임의 모든 값을 추출하고
# 비교하려는 다른 데이터 프레임에서 '중복되는 값'은 나타내되
# 중복되지 않는 값들은 Null 값으로 표시
Right_join = pd.merge(L_df, R_df, on='key', how='right')
|
cs |
위에서 생성한 조인의 결과값을 조회해보자.
1
2
3
4
5
6
|
>>> print(Right_join)
key x y
0 B 2.0 5
1 D 4.0 6
2 E NaN 7
3 F NaN 8
|
cs |
[4. pandas에서 Outer Join 사용방법]
Outer Join은 비교하고자 하는 모든 데이터 프레임의 key값들을 모두 보여주는
조건식이다.
(데이터 프레임을 그대로 붙여넣는 concat과는 다르며, 중복되는 key값은 1개로 보여주되 모든 데이터를 보여준다.)
1
2
3
4
|
# 4. Outer Join
# 비교하려는 데이터 프레임을 합치는 방법
# 겹치지 않는 칼럼의 값들은 Null 값으로 표시됨
Outer_join = pd.merge(L_df, R_df, on='key', how='outer')
|
cs |
위에서 생성한 조인의 결과값을 조회해보자.
1
2
3
4
5
6
7
8
|
>>> print(Outer_join)
key x y
0 A 1.0 NaN
1 B 2.0 5.0
2 C 3.0 NaN
3 D 4.0 6.0
4 E NaN 7.0
5 F NaN 8.0
|
cs |
SQL에서 가장 많이 활용되는 Join의 개념을 Pandas에서 사용한다면 구하고자 하는 데이터를 손쉽게 추출할 수 있다.
같은 key값들을 중복 처리하는 작업을 처리해야 될 경우 위와 같은 Join의 개념을 이해하여 사용한다면, 쉽게 문제를 해결해 나갈 수 있을 것이다.
야후 파이낸스를 통해 주가데이터를 사용하고 싶다면..
댓글