728x90
2주간 인턴을 하게 된 회사에서 작은 프로젝트를 진행했었다.
주제는 사무실에서 사용되고 있는 전력량을 예측하는 프로젝트!
사무실에서 사용하고있는 전기를 측정해둔 데이터가 있었고 이를 활용해 앞으로의 전력량을 예측하는 프로젝트였다.
시계열 데이터를 실제데이터로 활용해 보는 것은 처음이라 설레었다,,!
먼저,
1. 언제부터 언제까지의 데이터로?
2. 언제의 데이터로 확인해볼 것인가?
를 정했다.
DATA SET : 2개월(=61일=1464시간)
2개월 정도의 데이터를 받았고, 처음에는 Train과 Test data를 어떻게 나누어야 할지 고민스러웠다.
왜냐하면 시계열 데이터였기 때문!
시계열 데이터를 나누는 방법을 많이 탐색해보았고 아래와 같은 방법이 있었다.
시계열 데이터의 경우 랜덤성을 부여하면 안 되고 시간축을 유지
과거부터 데이터부터 TRAIN, VALIDATION, TEST 순으로 비율을 나눈다
TRAIN SET과 가까운 데이터부터 예측하고, 예측한 데이터를 다시 TRAIN 셋에 추가시켜서 그다음 데이터를 예측하는 식으로 점진적으로 TEST SET을 구성
너무 복잡하게 생각한 탓에 머리가 조금 아팠다,,(결국은 간단한 방법을 사용)
처음 받은 데이터는 여러 필요 없는 변수들도 있었기 때문에 전처리부터 시작했다.
여기서 필요한 변수는
datetime
temperature
humidity
meterage
정도였다.
train.dtypes
type을 확인해보니 날짜가 object로 되어있었기 때문에 datetime으로 변경해주어야 한다.
train['date_time'] = pd.to_datetime(train['datetime'], format='%Y-%m-%d %H:%M', errors='raise')
그 후, 년, 월, 일, 시간을 추출하였다.
# 년도 추출하기
train['year']=train['date_time'].dt.year
# 월 추출하기
train['month']=train['date_time'].dt.month
# 날짜 추출하기
train['day']=train['date_time'].dt.day
# 시간 추출하기
train['hour']=train['date_time'].dt.hour
train.info()
회사에서 사용하는 전력은 주중과 주말이 큰 영향을 줄 것이라고 생각했기 때문에 요일에 관련된 변수를 추가해주었다.
주말 : 0, 평일 : 1로 변수 추가
def is_weekend(t):
if t.weekday() >= 5:
return 0
else:
return 1
apply를 활용하면 간단하게 할 수 있었다!
train['is_weekend'] = train.date_time.apply(lambda t : is_weekend(t))
그 후, 필요 없어진 datetime은 dorp~!
train.drop('datetime',axis=1,inplace=True)
'프로젝트' 카테고리의 다른 글
사무실 내 전력량 예측 - (4) (0) | 2022.07.12 |
---|---|
사무실 내 전력량 예측 - (3) (0) | 2022.07.12 |
사무실 내 전력량 예측 - (2) (0) | 2022.03.24 |
따릉이 대여량 예측-(1) (0) | 2021.11.23 |