본문 바로가기

Data Science/Data Preprocessing

[02. Data Quality Assessment] 003. Duplicate values

728x90

중복된 데이터가 있는 경우는 어떻게 처리해야 할까? 그 데이터가 의미 있는 데이터이고 우연하게 중복된 값이 있는 것이라면 삭제해서는 안될 것이다. 하지만 주가 데이터 중에 휴일 데이터는 전 영업일 데이터를 가져오는 경우가 많기 때문에 삭제를 해야 할 것이다. 데이터의 의미를 잘 생각해보고 삭제 여부를 판단해야 한다.

 

아래는 휴일데이터가 없어 한국시장과 미국시장의 휴일이 다른 점을 이용하여 강제로 휴일 데이터를 만들어 삭제한 것이다.

 

import FinanceDataReader as fdr
import pandas as pd

if __name__ == '__main__':
    aapl = fdr.DataReader('AAPL', '2020-11-21')
    ssec = fdr.DataReader('005930', '2020-11-21')
    price = aapl[['Close']].merge(ssec[['Close']], how='outer', left_index=True, right_index=True)
    price = price.rename(columns={'Close_x': 'AAPL', 'Close_y': 'SSEC'})

    price = price.ffill()
    aapl = price[['AAPL']]
    print(aapl.head())
    print(aapl.drop_duplicates(keep='first').head())


결과 값
              AAPL
Date              
2020-11-23  113.85
2020-11-24  115.17
2020-11-25  116.03
2020-11-26  116.03
2020-11-27  116.59

              AAPL
Date              
2020-11-23  113.85
2020-11-24  115.17
2020-11-25  116.03
2020-11-27  116.59
2020-11-30  119.05

 

미국의 추수감사절이 빠진 걸 볼 수 있다. Keep값을 first가 아닌 last로 입력하면 중복된 값 중 마지막 데이터만 남긴다.

728x90