Pandas 시계열 데이터 구조
- 타임스탭프(time stamp)의 경우, Pandas는 Timestamp타입을 제공한다. 좀 더 효율적인 numpy.datetime64 데이터 타입을 기반으로 한다. 관련 인덱스 구조는 DatetiemIndex다.
- 기간(time period)의 경우, Pandas는 Period타입을 제공한다. 이것은 numpy.datetime64를 기반으로 고정 주파수 간격을 인코딩한다. 관련 인덱스 구조는 PeriodIndex다.
- 시간 델타 또는 지속 기간의 경우, Pandas는 Timedelta 타입을 제공한다. Timedelta는 파이썬의 기본 datetime.timedelta 타입의 좀 더 효율적인 대체 타입이며 numpy.timedelta를 기반으로 한다. 관련 인덱스 구조는 TimedeltaIndex다.
import pandas as pd
from datetime import datetime
dates = pd.to_datetime([datetime(2015,7,3), '4th of July, 2015',
'2015-Jul-6', '07-07-2015', '20150708'])
dates
DatetimeIndex(['2015-07-03', '2015-07-04', '2015-07-06', '2015-07-07',
'2015-07-08'],
dtype='datetime64[ns]', freq=None)
dates.to_period('D')
PeriodIndex(['2015-07-03', '2015-07-04', '2015-07-06', '2015-07-07',
'2015-07-08'],
dtype='period[D]', freq='D')
dates- dates[0]
TimedeltaIndex(['0 days', '1 days', '3 days', '4 days', '5 days'], dtype='timedelta64[ns]', freq=None)
pd.date_range('2015-07-03', '2015-07-10')
DatetimeIndex(['2015-07-03', '2015-07-04', '2015-07-05', '2015-07-06',
'2015-07-07', '2015-07-08', '2015-07-09', '2015-07-10'],
dtype='datetime64[ns]', freq='D')
pd.date_range('2015-07-03', periods=8)
DatetimeIndex(['2015-07-03', '2015-07-04', '2015-07-05', '2015-07-06',
'2015-07-07', '2015-07-08', '2015-07-09', '2015-07-10'],
dtype='datetime64[ns]', freq='D')
pd.date_range('2015-07-03', periods=8, freq='H')
DatetimeIndex(['2015-07-03 00:00:00', '2015-07-03 01:00:00',
'2015-07-03 02:00:00', '2015-07-03 03:00:00',
'2015-07-03 04:00:00', '2015-07-03 05:00:00',
'2015-07-03 06:00:00', '2015-07-03 07:00:00'],
dtype='datetime64[ns]', freq='H')
freq
오타가 나지 않게 정확하게 입력해야 합니다. 잘못 입력해서 frag
로 하면 값이 안 나옵니다.
pd.period_range('2015-07', periods=8, freq='M')
PeriodIndex(['2015-07', '2015-08', '2015-09', '2015-10', '2015-11', '2015-12',
'2016-01', '2016-02'],
dtype='period[M]', freq='M')
pd.timedelta_range(0, periods=10, freq='H')
TimedeltaIndex(['00:00:00', '01:00:00', '02:00:00', '03:00:00', '04:00:00',
'05:00:00', '06:00:00', '07:00:00', '08:00:00', '09:00:00'],
dtype='timedelta64[ns]', freq='H')
주기와 오프셋
pandas 주기 코드
코드 | 설명 | 코드 | 설명 |
---|---|---|---|
D | 달력상 일 | B | 영업일 |
W | 주 | ||
M | 월말 | BM | 영업일 기준 월말 |
Q | 분기말 | BQ | 영업일 기준 분기말 |
A | 연말 | BA | 영업일 기준 연말 |
H | 시간 | BH | 영업 시간 |
T | 분 | ||
S | 초 | ||
L | 밀리초 | ||
U | 마이크로초 | ||
N | 나노초 |
주기 코드의 시작 시점을 표시하는 목록
코드 | 설명 | 코드 | 설명 |
---|---|---|---|
MS | 월초 | BMS | 영업일 기준 월초 |
QS | 분기초 | BQS | 영업일 기준 분기초 |
AS | 연초 | BAS | 영업일 기준 연초 |
pd.timedelta_range(0, periods=9, freq='2H30T')
TimedeltaIndex(['00:00:00', '02:30:00', '05:00:00', '07:30:00', '10:00:00',
'12:30:00', '15:00:00', '17:30:00', '20:00:00'],
dtype='timedelta64[ns]', freq='150T')
from pandas.tseries.offsets import BDay
pd.date_range('2015-07-01', periods=5, freq=BDay())
DatetimeIndex(['2015-07-01', '2015-07-02', '2015-07-03', '2015-07-06',
'2015-07-07'],
dtype='datetime64[ns]', freq='B')
pd.date_range('2015-07-01', periods=5, freq='B')
DatetimeIndex(['2015-07-01', '2015-07-02', '2015-07-03', '2015-07-06',
'2015-07-07'],
dtype='datetime64[ns]', freq='B')
from pandas.tseries.offsets import BDay
와 동일하게 freq='B'
를 사용할 수 있습니다.
'Programming > Python' 카테고리의 다른 글
카카오톡 플러스친구 스마트채팅 만들기 1 - API 확인 (0) | 2018.05.03 |
---|---|
[python] Flask - ValueError: script argument must be unicode. (0) | 2018.04.01 |
[IPython] 참고 자료 (0) | 2018.01.10 |
[IPYTHON] 코드 프로파일링 및 시간 측정 (0) | 2018.01.09 |
MAC에서 jupyter config 설정 (0) | 2017.12.31 |
댓글