Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – DateTimeIndex에서 특정 시계열 빈도로 날짜의 분기(Quarter) 추출하기

DateTimeIndex에서 날짜가 속한 분기(Quarter)를 추출하려면 DateTimeIndex.quarter 속성을 사용하면 됩니다. 이 속성은 각 날짜가 연중 몇 번째 분기에 해당하는지를 정수 값으로 반환합니다.

필요한 라이브러리 불러오기

먼저 pandas 라이브러리를 임포트합니다.

import pandas as pd

DatetimeIndex 생성하기

이제 시작 시점부터 총 6개의 기간(periods=6)을 가지며, 빈도(freq)는 '2M', 즉 두 달 단위로 설정된 DatetimeIndex를 생성해 보겠습니다. 타임존은 호주 시드니(Australia/Sydney)로 지정합니다.

datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Sydney', freq='2M')

생성된 DatetimeIndex의 빈도를 확인하려면 다음과 같이 출력할 수 있습니다.

print("DateTimeIndex frequency...\n", datetimeindex.freq)

날짜의 분기를 구하는 코드는 아래와 같습니다.

print("\nGet the quarter of the date..\n", datetimeindex.quarter)

결과는 다음과 같은 분기 기준에 따라 계산됩니다.

  • 1분기: 1월 1일 ~ 3월 31일
  • 2분기: 4월 1일 ~ 6월 30일
  • 3분기: 7월 1일 ~ 9월 30일
  • 4분기: 10월 1일 ~ 12월 31일

전체 예제 코드

지금까지 설명한 내용을 하나의 완전한 코드로 정리하면 다음과 같습니다.

import pandas as pd

# periods=6, freq='2M'으로 DatetimeIndex 생성 (두 달 단위)
# 타임존은 Australia/Sydney로 지정
datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Sydney', freq='2M')

# DateTimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)

# DateTimeIndex의 빈도 출력
print("DateTimeIndex frequency...\n", datetimeindex.freq)

# 날짜의 분기 추출
# 결과는 연중 분기 기준에 따름:
# 1분기 = 1월 1일 ~ 3월 31일
# 2분기 = 4월 1일 ~ 6월 30일
# 3분기 = 7월 1일 ~ 9월 30일
# 4분기 = 10월 1일 ~ 12월 31일
print("\nGet the quarter of the date..\n", datetimeindex.quarter)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

DateTimeIndex...
DatetimeIndex(['2021-10-31 02:30:50+11:00', '2021-12-31 02:30:50+11:00',
'2022-02-28 02:30:50+11:00', '2022-04-30 02:30:50+10:00',
'2022-06-30 02:30:50+10:00', '2022-08-31 02:30:50+10:00'],
dtype='datetime64[ns, Australia/Sydney]', freq='2M')
DateTimeIndex frequency...
<2 * MonthEnds>

Get the quarter of the date..
Int64Index([4, 4, 1, 2, 2, 3], dtype='int64')

결과 해석

출력된 결과를 살펴보면, 생성된 날짜들이 각각 어떤 분기에 속하는지 확인할 수 있습니다. 예를 들어 첫 번째 날짜인 2021년 10월 31일은 4분기, 2022년 2월 28일은 1분기, 2022년 4월 30일은 2분기에 해당함을 알 수 있습니다. 이처럼 quarter 속성을 활용하면 시계열 데이터에서 분기별 집계나 필터링 작업을 손쉽게 수행할 수 있습니다.