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

Python Pandas – DateTimeIndex에서 연중 일(day of year) 서수 날짜 추출하기

개요

Pandas의 DateTimeIndex.dayofyear 속성을 사용하면 특정 시계열 빈도로 구성된 DateTimeIndex에서 연중 몇 번째 날(ordinal day of year)을 손쉽게 추출할 수 있습니다. 이 속성은 각 날짜가 해당 연도의 1월 1일부터 계산했을 때 며칠째인지를 나타내는 정수 값을 반환합니다.

라이브러리 임포트

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

DatetimeIndex 생성

기간(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 속성을 활용하면 시계열 데이터에서 날짜의 연중 위치를 정수 형태로 간편하게 얻을 수 있어, 계절성 분석이나 날짜 기반 필터링 작업에 유용하게 활용됩니다.