# GroupBy와 시간대별 데이터 분석
자전거 데이터
- 미국 시애틀 프레몬트 브릿지 자전거 카운터
data = pd.read_csv(
'bicycle.csv',
index_col='Date', # Date 컬럼을 인덱스로 지정
parse_dates=True) # 자동으로 날짜 처리
data.head()
시각화
- 편의를 위해 컬럼 이름 변경
data.columns = ['Total', 'East', 'West']
- 시각화
data.plot()
- 주 단위 합계 시각화
data.resample('W').sum().plot()
이동 평균
- 일단위 합계의 30일 이동 평균
daily = data.resample('D').sum()
daily.rolling(30, center=True).mean().plot() - 가까운 날짜에 더 많은 가중치를 주고, 먼 날짜에 적은 가중치를 주는 방식
roll = daily.rolling(50, center=True, win_type='gaussian')
roll.sum(std=10).plot()
시간대별 평균
- 시간별(data.index.time)로 데이터를 모아(groupby) 평균
by_time = data.groupby(data.index.time).mean()
by_time.plot()
가로 눈금을 4시간 간격으로
import numpy as np
hourly_ticks = 4 * 60 * 60 * np.arange(6)
by_time.plot(xticks=hourly_ticks, style=[':', '--', '-'])
요일별 평균
by_weekday = data.groupby(data.index.dayofweek).mean()
by_weekday.index = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
by_weekday.plot()