'''
이 자료에서 사용한 데이터 셋은 kaggle에서 받은 것을
datetime, season, registered, casual, workingday만 선택해 시작합니다.
acknowledgement:
아래 공개 데이터 셋을 kaggle에서 전처리 후 train/test로 나누어 제공합니다.
http://archive.ics.uci.edu/ml/datasets/Bike+Sharing+Dataset
kaggle 링크:
https://www.kaggle.com/c/bike-sharing-demand
(kaggle에서 받으려면 회원가입이 필요합니다.)
이 데이터 셋으로 나온 논문:
Fanaee-T, Hadi, and Gama, Joao,
Event labeling combining ensemble detectors and background knowledge,
Progress in Artificial Intelligence (2013):
pp. 1-15, Springer Berlin Heidelberg.
'''
from glob import glob
import pandas as pd
# datetime 시간에 registered(등록회원), casual(비등록회원), count(앞 두 개 합한 것) 자전거 대여 대수를 나타냅니다.
# 이 때의 계절을 1(겨울), workingday(일하는 날인지?) 로 표현합니다.
baseline = pd.read_csv(glob('*train_baseline.csv')[0])
baseline.head()
datetime
season
workingday
casual
registered
count
0
2011-01-01 00:00:00
1
0
3
13
16
1
2011-01-01 01:00:00
1
0
8
32
40
2
2011-01-01 02:00:00
1
0
5
27
32
3
2011-01-01 03:00:00
1
0
3
10
13
4
2011-01-01 04:00:00
1
0
0
1
1
# datetime은 년/월/일/시간 정보가 들어있습니다.
# pd.DatetimeIndex() 기능을 이용해 이를 시간 정보로 변환 후
# .year, .month, .day 등으로 각 날짜 정보를 뽑아냅니다.
# dayofweek은 월 ~ 일요일을 0 ~ 6 으로 나타낸 것입니다.
dt_idx = pd.DatetimeIndex(baseline['datetime'])
baseline['year'] = dt_idx.year
baseline['month'] = dt_idx.month
baseline['day'] = dt_idx.day
baseline['dayofweek'] = dt_idx.dayofweek
baseline['hour'] = dt_idx.hour
baseline['minute'] = dt_idx.minute
baseline['second'] = dt_idx.second
print(baseline.shape)
baseline.head()
(10886, 13)
datetime
season
workingday
casual
registered
count
year
month
day
dayofweek
hour
minute
second
0
2011-01-01 00:00:00
1
0
3
13
16
2011
1
1
5
0
0
0
1
2011-01-01 01:00:00
1
0
8
32
40
2011
1
1
5
1
0
0
2
2011-01-01 02:00:00
1
0
5
27
32
2011
1
1
5
2
0
0
3
2011-01-01 03:00:00
1
0
3
10
13
2011
1
1
5
3
0
0
4
2011-01-01 04:00:00
1
0
0
1
1
2011
1
1
5
4
0
0
# dayofweek으로부터 주말에 대한 정보를 뽑아줍니다.
# dayofweek가 5 이상이면 토, 일요일이므로 weekend 컬럼에 1을 할당합니다.
# 맨 첫 줄에 weekend 컬럼에 0을 넣은 것은 기본값으로 0을 넣어준 것입니다.
baseline['weekend'] = 0
baseline.loc[baseline['dayofweek'] >= 5, 'weekend'] = 1
baseline.head()
datetime
season
workingday
casual
registered
count
year
month
day
dayofweek
hour
minute
second
weekend
0
2011-01-01 00:00:00
1
0
3
13
16
2011
1
1
5
0
0
0
1
1
2011-01-01 01:00:00
1
0
8
32
40
2011
1
1
5
1
0
0
1
2
2011-01-01 02:00:00
1
0
5
27
32
2011
1
1
5
2
0
0
1
3
2011-01-01 03:00:00
1
0
3
10
13
2011
1
1
5
3
0
0
1
4
2011-01-01 04:00:00
1
0
0
1
1
2011
1
1
5
4
0
0
1
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns