개요
Pandas의 DateTimeIndex.dayofyear 속성을 사용하면 특정 시계열 빈도로 구성된 DateTimeIndex에서 연중 몇 번째 날(ordinal day of year)을 손쉽게 추출할 수 있습니다. 이 속성은 각 날짜가 해당 연도의 1월 1일부터 계산했을 때 며칠째인지를 나타내는 정수 값을 반환합니다.
라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pdDatetimeIndex 생성
기간(periods)은 6으로, 빈도(freq)는 'D'(일 단위)로 설정하여 DatetimeIndex를 생성합니다. 타임존은 'Australia/Sydney'로 지정했습니다.
datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Sydney', freq='D')DateTimeIndex 출력
생성된 DateTimeIndex를 화면에 출력해 확인합니다.
print("DateTimeIndex...\n", datetimeindex)연중 일(day of year) 추출
dayofyear 속성을 사용해 각 날짜의 연중 순번을 가져옵니다.
print("\nGet the ordinal day of year..\n", datetimeindex.dayofyear)전체 예제 코드
지금까지 설명한 내용을 하나의 코드로 정리하면 다음과 같습니다.
import pandas as pd
# 기간 6, 빈도 'D'(일 단위)로 DatetimeIndex 생성
# 타임존은 Australia/Sydney로 지정
datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Sydney', freq='D')
# DateTimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)
# DateTimeIndex의 빈도 출력
print("DateTimeIndex frequency...\n", datetimeindex.freq)
# 연중 일(day of year) 추출
print("\nGet the ordinal day of year..\n", datetimeindex.dayofyear)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTimeIndex... DatetimeIndex(['2021-10-20 02:30:50+11:00', '2021-10-21 02:30:50+11:00', '2021-10-22 02:30:50+11:00', '2021-10-23 02:30:50+11:00', '2021-10-24 02:30:50+11:00', '2021-10-25 02:30:50+11:00'], dtype='datetime64[ns, Australia/Sydney]', freq='D') DateTimeIndex frequency... <Day> Get the ordinal day of year.. Int64Index([293, 294, 295, 296, 297, 298], dtype='int64')
결과 해석
출력 결과를 보면 2021년 10월 20일부터 10월 25일까지 총 6일의 날짜가 일(Day) 빈도로 생성되었으며, 각 날짜는 호주 시드니 타임존(UTC+11) 기준으로 표시됩니다. dayofyear 속성은 1월 1일을 1일로 계산했을 때 각 날짜가 해당 연도의 몇 번째 날인지 반환하므로, 2021년 10월 20일은 293번째 날, 10월 25일은 298번째 날에 해당합니다. 이처럼 dayofyear 속성을 활용하면 시계열 데이터에서 날짜의 연중 위치를 정수 형태로 간편하게 얻을 수 있어, 계절성 분석이나 날짜 기반 필터링 작업에 유용하게 활용됩니다.