본문 바로가기
Quant

퀀트, 파이썬 / 파이썬 pandas의 Join 개념 알아보기 / 내부조인(Inner join), 외부조인(Outer join) 등등 / python pandas 사용하기, pandas 기초, SQL과 python pandas, pandas 사용법

by KTC_CHANCE 2022. 7. 2.

 

오늘은 파이썬 패키지인 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의 개념을 이해하여 사용한다면, 쉽게 문제를 해결해 나갈 수 있을 것이다.

 

야후 파이낸스를 통해 주가데이터를 사용하고 싶다면..

 

퀀트, 파이썬 / 야후 파이낸스로 삼성전자, 네이버, 카카오의 주가 데이터 가져오기 / 야후파이낸

*해당 코드는 파이썬으로 배우는 포트폴리오 서적의 코드를 인용하여 작성한 코드입니다. 야후 파이낸스로 주가 데이터를 불러오는 방법은 블룸버그, 데이터가이드, 퀀티와이즈에 접근하기 힘

ktcf.tistory.com

 

댓글