컴공생의 다이어리
[파이썬, Python] 판다스(pandas)에서 날짜와 시간 - pd.Timestamp(), pd.to_datetime(), pd.date_range(), pd.Period(), pd.period_range() 본문
[파이썬, Python] 판다스(pandas)에서 날짜와 시간 - pd.Timestamp(), pd.to_datetime(), pd.date_range(), pd.Period(), pd.period_range()
컴공 K 2021. 7. 22. 00:01판다스(pandas)에서 날짜와 시간
판다스의 날짜와 시간 함수는 넘파이(numpy)를 기반으로 만들어졌다. 하나의 날짜만 사용할 때는 Timestamp로 표현하고, 두 개 이상의 배열을 이룰 때는 DatetimeIndex로 표현한다.
Timestamp 함수
Timestamp()함수를 사용해 특정 날짜를 표현할 수 있다. 숫자가 들어오는 경우 1970년 1월 1일을 기준으로 Timestamp에 넣은 만큼 더해준다. 이때, unit이라는 옵션에 단위를 설정해 어디에 더할지 설정할 수 있다.
import pandas as pd
pd.Timestamp(1239.1238934) # 디폴트 : 나노초
#Timestamp('1970-01-01 00:00:00.000001239')
pd.Timestamp(1239.1238934, unit='D') # 단위 : 일
#Timestamp('1973-05-24 02:58:24.389760')
또한 다음과 같이 문자열을 넣을 수도 있다.
pd.Timestamp('2021-01-01')
#Timestamp('2019-01-01 00:00:00')
pd.Timestamp('2021-01')
#Timestamp('2019-01-01 00:00:00')
pd.Timestamp('2021')
#Timestamp('2019-01-01 00:00:00')
to_datetime 함수
to_datetime()함수도 특정 시점 날짜와 시간을 생성할 수 있다. 아래와 같이 문자열이나 숫자를 넣어서 날짜와 시간을 생성할 수 있다.
import pandas as pd
pd.to_datetime('2021.1.1 12')
#Timestamp('2021-01-01 12:00:00')
pd.to_datetime('2021-1-1 12')
#Timestamp('2021-01-01 12:00:00')
pd.to_datetime(11111)
#Timestamp('1970-01-01 00:00:00.000011111')
to_datetime()에 날짜들의 리스트를 넣을 경우 범위(DatetimeIndex)를 표현하게 됩니다. DatetimeIndex라는 클래스로 배열이 생기고 데이터 타입이 datetime64[ns]로 표현되는 것을 확인할 수 있다.
pd.to_datetime(['2020-12-1', '2021-1-2'])
# DatetimeIndex(['2020-12-01', '2021-01-02'], dtype='datetime64[ns]', freq=None)
date_range 함수
date_range()함수는 특정 기간의 날짜를 자동 생성한다. 인자로 '2021-05'과 '2021-06'를 전달하면 출력 결과는 6월 말까지 데이터를 생성하는 것이 아니라 6월 1일까지만 데이터를 생성한다.
import pandas as pd
pd.date_range('2021-05','2021-06')
# DatetimeIndex(['2021-05-01', '2021-05-02', '2021-05-03', '2021-05-04',
# '2021-05-05', '2021-05-06', '2021-05-07', '2021-05-08',
# '2021-05-09', '2021-05-10', '2021-05-11', '2021-05-12',
# '2021-05-13', '2021-05-14', '2021-05-15', '2021-05-16',
# '2021-05-17', '2021-05-18', '2021-05-19', '2021-05-20',
# '2021-05-21', '2021-05-22', '2021-05-23', '2021-05-24',
# '2021-05-25', '2021-05-26', '2021-05-27', '2021-05-28',
# '2021-05-29', '2021-05-30', '2021-05-31', '2021-06-01'],
# dtype='datetime64[ns]', freq='D')
Period 함수
Period()함수는 특정 시점이 아니라 기간을 포괄하는 개념이다. pd.Period()에 '2021-01'을 넣으면 Period함수의 디폴트 값인 월 단위로 인식된다. 하지만 freq 옵션에 'D'로 설정하면 일 단위로 자동 생성된다.
import pandas as pd
pd.Period('2021-01')
# Period('2021-01', 'M')
pd.Period('2021-03', freq='D')
#Period('2021-03-01', 'D')
period_range 함수
period_range()함수는 str타입의 두 개 이상 날짜 데이터를 전달하면 PeriodIndex 클래스로 묶인다.
import pandas as pd
pd.period_range('2021-01','2021-02',freq='D')
#PeriodIndex(['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04',
# '2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08',
# '2021-01-09', '2021-01-10', '2021-01-11', '2021-01-12',
# '2021-01-13', '2021-01-14', '2021-01-15', '2021-01-16',
# '2021-01-17', '2021-01-18', '2021-01-19', '2021-01-20',
# '2021-01-21', '2021-01-22', '2021-01-23', '2021-01-24',
# '2021-01-25', '2021-01-26', '2021-01-27', '2021-01-28',
# '2021-01-29', '2021-01-30', '2021-01-31', '2021-02-01'],
# dtype='period[D]', freq='D')
Timestamp vs Period 차이
pd.Timestamp()와 pd.Period()는 차이가 있다. Timestamp는 한 시점을 뜻하고, Period는 1일의 시작 시점부터 종료 시점까지의 범위를 포괄한다.
import pandas as pd
p = pd.Period('2021-07-22')
test = pd.Timestamp('2021-07-22 22:50')
p.start_time < test < p.end_time
#True
p.start_time
#Timestamp('2021-07-22 00:00:00')
p.end_time
#Timestamp('2021-07-22 23:59:59.999999999')
출처 : 핀테크 Pre-인턴십 코스 - 금융 데이터 분석
'Development > Python & Django' 카테고리의 다른 글
[파이썬, Python] 아스키코드(ASCII Code) 변환 - ord(), chr() (0) | 2021.09.15 |
---|---|
[파이썬, Python] 2차원 배열 초기화 (0) | 2021.08.06 |
[파이썬, Python] 넘파이(Numpy)에서 날짜와 시간 - datetime64, np.array(), np.arange() (0) | 2021.07.21 |
[파이썬, Python] 날짜 변환(str→datetime, datetime→str) (1) | 2021.07.18 |
[파이썬, Python] datetime의 timezone 대한민국(서울)으로 변경 (0) | 2021.07.17 |