본문 바로가기
판다스/중급 판다스

[pandas] period 자료형의 장점

by 김판다t 2024. 10. 16.

판다스에서 period 자료형의 장점

세 종류의 시계열 데이터

 

판다스는 다음 세 종류의 자료형으로 시계열 데이터를 처리합니다.

그림 출처 : 파이썬의 엑셀, 판다스 라이브러리

 

 

Timestamp는 시점이며, Period는 기간이고, Timedelta는 시간 차이를 나타내는 자료형입니다.

 

판다스의 period dtype의 장점

 

일반적으로 중급 이상의 숙련된 판다스 유저들도 period 자료형을 사용에 어려움을 느끼지만, 이 자료형도 유저의 편의를 위해 설계된 만큼, 제대로 활용하면 코드의 간결성을 크게 높일 수 있습니다.

 

예시1)

예시를 위해 period 자료형의 배열을 생성해 변수 prd로 지정합니다.

import pandas as pd
prd = pd.period_range('2021Q1', periods=3, freq='Q')

 

prd의 출력

PeriodIndex(['2021Q1', '2021Q2', '2021Q3'], dtype='period[Q-DEC]')

 

period 자료형 배열은 간단한 연산으로 지정된 기간을 더할 수 있습니다. 예를 들어, 변수 prd에 1년을 추가하고 싶다면 각 값에 4분기를 더하면 되고, period 자료형의 경우 단순히 정수 4를 더하는 방식으로 이를 처리할 수 있습니다.

prd + 4
PeriodIndex(['2022Q1', '2022Q2', '2022Q3'], dtype='period[Q-DEC]')

 

 

예시2)

예시1도 유용하지만, 이를 응용하면 더 효율적인 결과를 얻을 수 있습니다. 다음 변수 dates는 타임스탬프 배열입니다.

import pandas as pd
d = ['2020-05-12', '2021-11-03', '2022-03-20']
dates = pd.to_datetime(d)

 

dates의 출력

DatetimeIndex(['2020-05-12', '2021-11-03', '2022-03-20'], dtype='datetime64[ns]')
문제:
dates의 값은 현재 계약일이고, 만기일은 해당 계약일이 속한 분기가 아닌 다음 분기의 마지막 날로 설정된다. 계약일과 만기일 간의 날짜 차이(timedelta)를 계산하라.

 

이와 같은 문제는 period 자료형으로 변환하면 간단하게 처리할 수 있습니다. 각 날짜를 해당 분기로 변환하고, 거기에 1을 더해 다음 분기의 마지막 날짜로 변경합니다. 그런 다음, 이를 원래 날짜와 비교해 각 날짜가 만기일과 얼마나 차이가 나는지 계산합니다.

 

(dates.to_period('Q') + 1).to_timestamp('Q') - dates
TimedeltaIndex(['151 days', '148 days', '102 days'], dtype='timedelta64[ns]')

 

각각의 만기일과 151일, 148일, 102일의 차이를 확인할 수 있습니다. 이처럼 period 자료형은 시계열 데이터를 처리할 때 매우 효율적이고 간편한 자료형입니다.

 


판다스 책이 출판되었습니다.

 

교보문고 구매 페이지, 알라딘 구매 페이지yes24 구매 페이지