요일(feature) 만들기
비선형 모델에 더 많은 정보를 제공하려면 datetime 기반 feature를 직접 만들 수 있어요. 대부분의 금융 데이터에는 datetime이 들어 있으며, 그 안에는 연도, 월, 일, 그리고 경우에 따라 시, 분, 초 같은 정보가 담겨 있어요. 여기에 더해 요일, 분기, 특정 이벤트(예: 실적 발표) 이후 경과 시간 같은 정보도 뽑아낼 수 있어요.
여기서는 데이터가 오래되지는 않았기 때문에 요일만 만들어요. pandas datetime 인덱스의 dayofweek 속성을 사용해 요일을 가져오고, 이어서 pandas의 get_dummies()로 dayofweek를 더미 변수화합니다. 이렇게 하면 각 요일에 대한 이진(0 또는 1) 컬럼이 생성돼요. 첫 번째 컬럼은 다른 컬럼들로부터 유추할 수 있으므로 삭제합니다.
이 연습은 강의의 일부입니다
Python으로 배우는 금융 분야 Machine Learning
연습 안내
lng_df인덱스에서dayofweek속성을 사용해 요일을 구하세요.- 요일 변수에
get_dummies함수를 적용하고, 접두사(prefix)를'weekday'로 지정하세요. - 두 DataFrame을 병합할 수 있도록
days_of_week변수의 인덱스를lng_df인덱스와 같게 설정하세요. lng_df와days_of_weekDataFrame을 하나의 DataFrame으로 이어 붙이세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Use pandas' get_dummies function to get dummies for day of the week
days_of_week = pd.get_dummies(lng_df.index.____,
prefix=____,
drop_first=True)
# Set the index as the original dataframe index for merging
days_of_week.index = lng_df.____
# Join the dataframe with the days of week dataframe
lng_df = pd.concat([lng_df, ____], axis=1)
# Add days of week to feature names
feature_names.extend(['weekday_' + str(i) for i in range(1, 5)])
lng_df.dropna(inplace=True) # drop missing values in-place
print(lng_df.head())