컴공생의 다이어리

[파이썬, Python] 판다스(pandas)에서 날짜와 시간 - pd.Timestamp(), pd.to_datetime(), pd.date_range(), pd.Period(), pd.period_range() 본문

Development/Python & Django

[파이썬, 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-인턴십 코스 - 금융 데이터 분석

728x90
Comments