Pandas DateTimeIndex를 Period로 변환하기
Pandas에서 DateTimeIndex를 Period(기간) 형태로 변환하려면 to_period() 메서드를 사용하면 됩니다. 이때 변환될 데이터의 주기(빈도)는 freq 매개변수를 통해 지정할 수 있습니다.
1단계: 필요한 라이브러리 가져오기
먼저 pandas 라이브러리를 임포트합니다.
import pandas as pd
2단계: DatetimeIndex 생성
시작 날짜를 기준으로 총 5개의 요소를 가지며, 빈도가 'Y'(연 단위)인 DatetimeIndex를 생성합니다. 여기서는 '2Y'를 사용해 2년 간격으로 날짜를 만들었습니다.
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, freq='2Y')3단계: DatetimeIndex 확인
생성된 DatetimeIndex를 화면에 출력해 내용을 확인합니다.
print("DateTimeIndex...\n", datetimeindex)4단계: DatetimeIndex를 Period로 변환
to_period() 메서드에 freq='M' 값을 전달하여 빈도를 '월(Month)' 단위로 설정한 뒤 변환을 수행합니다.
print("\nConvert DateTimeIndex to Period...\n", datetimeindex.to_period(freq='M'))전체 예제 코드
지금까지 설명한 과정을 하나의 코드로 정리하면 다음과 같습니다.
import pandas as pd
# 시작 날짜 기준으로 5개의 요소를 가지는 DatetimeIndex 생성 (빈도: 2년)
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, freq='2Y')
# DatetimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)
# DatetimeIndex의 빈도 출력
print("DateTimeIndex frequency...\n", datetimeindex.freq)
# to_period() 메서드로 PeriodIndex로 변환 (빈도를 '월'로 설정)
print("\nConvert DateTimeIndex to Period...\n", datetimeindex.to_period(freq='M'))실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다. 원래의 DatetimeIndex가 연 단위 타임스탬프에서 PeriodIndex, 즉 'YYYY-MM' 형식의 월 단위 기간으로 성공적으로 변환된 것을 확인할 수 있습니다.
DateTimeIndex... DatetimeIndex(['2021-12-31 07:20:32.261811624', '2023-12-31 07:20:32.261811624', '2025-12-31 07:20:32.261811624', '2027-12-31 07:20:32.261811624', '2029-12-31 07:20:32.261811624'], dtype='datetime64[ns]', freq='2A-DEC') DateTimeIndex frequency... <2 * YearEnds: month=12> Convert DateTimeIndex to Period... PeriodIndex(['2021-12', '2023-12', '2025-12', '2027-12', '2029-12'], dtype='period[M]')
정리
DatetimeIndex는 특정 시점(timestamp)을 나타내는 반면, PeriodIndex는 연·분기·월 같은 기간(period) 자체를 나타냅니다. 시계열 데이터를 분석할 때 일별·월별 집계 등 기간 단위 연산이 필요하다면 to_period(freq=...) 메서드를 활용해 손쉽게 변환할 수 있습니다.