36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
# pandas는 데이터를 표 형태(DataFrame)로 다루기 위한 라이브러리입니다
|
|
import pandas as pd
|
|
|
|
# 이 함수는 Polygon API에서 받아온 주식 데이터를 CDS(Complete Data Set)로 정리합니다
|
|
def clean_ohlcv(raw_data: list) -> pd.DataFrame:
|
|
# 입력된 raw_data (딕셔너리 리스트)를 pandas의 DataFrame으로 변환
|
|
df = pd.DataFrame(raw_data)
|
|
|
|
# 't' 컬럼은 timestamp인데 밀리초 단위이므로 datetime 형식으로 변환
|
|
df['t'] = pd.to_datetime(df['t'], unit='ms')
|
|
|
|
# 컬럼 이름을 사람이 이해하기 쉬운 형태로 바꿉니다
|
|
df.rename(columns={
|
|
't': 'timestamp', # 날짜 및 시간
|
|
'o': 'open', # 시가
|
|
'h': 'high', # 고가
|
|
'l': 'low', # 저가
|
|
'c': 'close', # 종가
|
|
'v': 'volume' # 거래량
|
|
}, inplace=True)
|
|
|
|
# 중복된 행이 있다면 제거
|
|
df.drop_duplicates(inplace=True)
|
|
|
|
# 결측값(NaN)이 포함된 행이 있다면 제거
|
|
df.dropna(inplace=True)
|
|
|
|
# 날짜(timestamp)를 기준으로 오름차순 정렬
|
|
df.sort_values(by='timestamp', inplace=True)
|
|
|
|
# 인덱스를 다시 0부터 순서대로 지정
|
|
df.reset_index(drop=True, inplace=True)
|
|
|
|
# 최종적으로 정제된 CDS(DataFrame)를 반환
|
|
return df
|