Python으로 시계열 데이터 다루기
Python으로 시계열 데이터 다루기
- 주요 개념:
- datetime
- resample
- rolling
- groupby
하나의 날짜/시간
- 날짜/시간 자료형으로 변환
import pandas as pd
date = pd.to_datetime('2025-06-20') date.year: 년date.month: 월date.week: 주date.day: 일date.weekday(): 요일(0=월, 1=화, 2=수, 3=목, 4=금, 5=토, 6=일)date.hour: 시date.minute: 분date.second: 초
고정된 간격의 기간 더하기
delta = pd.Timedelta(1, 'D')
date + delta
| W | D | h | m | s |
|---|---|---|---|---|
| 주 | 일 | 시 | 분 | 초 |
- 년(Y)과 월(M)은 간격이 일정하지 않아 지원이 안됨
달력 기준의 날짜 계산
date + pd.DateOffset(years=1) # 1년 후
date + pd.DateOffset(months=3) # 3개월 후
date + pd.DateOffset(weekday=0) # 다음 월요일
알파벳 주가 데이터
df = pd.read_excel('GOOG.xlsx')
df.head()
- 문자열을 날짜 시간 형식으로 변환
df.Date = pd.to_datetime(df.Date) - Date 컬럼을 인덱스(행 이름)으로 변환
df.set_index('Date', inplace=True)
날짜로 인덱싱
- 2014년 3월 31일 데이터
df.loc['2014-03-31'] - 일정 기간 데이터
df.loc['2014-03-31':'2014-04-02'] - 특정 시점의 데이터
df.loc['2014-05'] # 2014년 5월
df.loc['2016'] # 2016년
정렬 & 시각화
- 인덱스를 순서대로 정렬
df.sort_index(inplace=True) - 시각화
df.Price.plot()
변화량 구하기
- 전일과 차이 구하기
df.Price.diff() - 전일과 차이의 비율 구하기
시각화 하려면 끝에
df.Price.pct_change().plot()
일정 간격으로 데이터 뽑기
- 매월 말일 주가
df.Price.asfreq('ME') - Y(연), Q(분기), M(월), W(주), D(일)
- B를 붙이면 주말 제외(영업일)
- S를 붙이면 기초를 뜻함: YS(연초), QS(분기초) 등
- E를 붙이면 기말을 뜻함: YE(연말), QE(분기말) 등
- 분기에 기준 월을 붙일 수 있음: QS-FEB(2월 1일부터 3개월 간격)
- 주에 기준 요일을 붙일 수 있음: W-WED(매주 수요일)