Python/Pandas

Pandas _ Reindex

MINSU KANG 2021. 1. 2. 16:12

금융 데이터를 다루다 보면 많이 직면하는 문제 중 하나가 Index이다. 예를들어 'A'와 'B'라는 종목이 있다면, 2020-12-05 날짜에 'A'라는 데이터에는 값이 존재하지만 'B'라는 데이터에는 값이 존재하지 않는 경우가 발생한다.

 

우선 파이썬으로 불러오기 전에 엑셀로 해당 작업을 하다는 것은 비효율적이다. 그래서 파이썬으로 불러와서 데이터를 수정하는 경우가 대다수이다. 데이터를 수정하려고 나 같은 경우 Pandas의 reindex 관련 모듈의 사용법을 몰랐을 때는 하나의 빈 Array를 만들고 for Iteration을 이용해 날짜를 돌면서 A Series와 B Series에 값이 존재하면 빈 Array에 데이터를 첨부하는 식으로 하는 방법을 많이 사용했다.

 

하지만 이번 포스팅의 예제처럼 Pandas의 내장되어 있는 메소드를 사용한다면 쉽게 처리할 수 있을듯 하다.

 



import FinanceDataReader as fdr
import pandas as pd

#%%

startDate = '2020-01-02'
endDate = '2020-12-30'

# SKC 주가
df1 = fdr.DataReader("011790", startDate, endDate)

# 태영건설 주가 
df2 = fdr.DataReader("009410", startDate, endDate)

#임의로 태영건설의 주가 중 '2020-12-29'의 데이터를 제거

df2 = df2.drop(pd.to_datetime('2020-12-29'))

df1.shape # 248 x 6
df2.shape # 247 x 6

 



# 여기서 첫번째 방법은 df1을 df2의 크기로 맞춘다

new_df1 = df1.reindex(df2.index)

2020-12-29 데이터를 reindex 메소드를 통해 제거한 df1



#두번째 방법은 df2를 df1의 크기로 맞추는데, 빈 부분을 전일자 데이터로 채운다
new_df2 = df2.reindex(df1.index)
new_df2 = new_df2.fillna(method='ffill')

2020-12-29 데이터를 생성 후 전일자로 채운 new_df2