0. 데이터 로드
- 케글 데이터 - 자전거 수요
www.kaggle.com/c/bike-sharing-demand/data
raw_all = pd.read_csv('Bike_Sharing_Demand_Full.csv')
raw_all
1. 빈도(Frequency)
- 빈도를 시간으로 설정한 후, NaN 값은 앞의 값으로 채운다.
raw_all.set_index('datetime', inplace=True)
raw_all = raw_all.asfreq('H', method='ffill')
2. 추세(Trend, 𝑇𝑡)
- additive 모형으로 데이터 분해 : trend + seasonal + residual (additive)
sm.tsa.seasonal_decompose(raw_all['count'], model='additive').plot()
plt.show()
- result.trend 로 trend 값 가져와 저장
Y_trend = pd.DataFrame(result.trend)
Y_trend.columns = ['count_trend']
3. 계절성(Seasonality, 𝑆𝑡)
- result.seasonal 로 계절성 분해
Y_seasonal = pd.DataFrame(result.seasonal)
Y_seasonal.columns = ['count_seasonal']
4. 주기(Cycle, 𝐶𝑡)
- 매일의 패턴, 일주일의 패턴
raw_all[['count']], # 시간
raw_all[['count']].rolling(24).mean() # 매일의 패턴 평균
raw_all[['count']].rolling(24*7).mean() # 일주일의 패턴 평균
5. 시점의 결과값 차이
- diff() 함수로 다음 행 결과값과 이전의 결과값 차이
raw_all[['count']].diff()
6. 그룹 나누기
- 온도를 기준으로 최소값부터 최대값까지 기준으로 5개의 그룹으로 나눔
[(0.78, 8.856] < (8.856, 16.892] < (16.892, 24.928] < (24.928, 32.964] < (32.964, 41.0]]
pd.cut(raw_all['temp'], 5)
7. 날짜 추출
- 연도별, 쿼터별, 연도별 쿼터 추출
raw_all['Year'] = raw_all.datetime.dt.year
raw_all['Quater'] = raw_all.datetime.dt.quarter
raw_all['Quater_ver2'] = raw_all['Quater'] + (raw_all.Year - raw_all.Year.min()) * 4 # 연도별 쿼터 나누기
- 월, 일, 시간, 주, 요일 추출
raw_all['Month'] = raw_all.datetime.dt.month
raw_all['Day'] = raw_all.datetime.dt.day
raw_all['Hour'] = raw_all.datetime.dt.hour
raw_all['DayofWeek'] = raw_all.datetime.dt.dayofweek
8. 지연값(Lagged values, 𝐿𝑎𝑔𝑡(𝑋1))
raw_all['count_lag1'] = raw_all['count'].shift(1)
raw_all['count_lag2'] = raw_all['count'].shift(2)
9. 더미변수
- 더미변수로 만든 후 중복되는 열 하나 삭제
pd.get_dummies(raw_all['Quater'], prefix='Quater_Dummy', drop_first=True) # 이름 붙이고 첫번째 열 삭제
+ 참고 자료 및 출처
- 김경원 < 파이썬을 활용한 시계열 데이터 분석 A-Z 강의 > ( 패스트캠퍼스 강의 )
'Analysis > Time series' 카테고리의 다른 글
Lecture 5. 시계열 데이터 시각화 (0) | 2021.03.15 |
---|---|
Lecture 4. 시계열 데이터 분리 및 회귀분석 (0) | 2021.03.13 |
Lecture 2. 시계열 알고리즘 (0) | 2021.03.13 |
Lecture 1. 시계열 데이터 기초 (0) | 2021.03.12 |
Lecture 0. 데이터 분석 사이클 (0) | 2021.03.10 |
댓글