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

Python Pandas – 특정 시계열 빈도의 DateTimeIndex에서 시간(hour) 추출하기

시계열 데이터를 다룰 때 DateTimeIndex에 저장된 날짜·시간 값에서 '시(hour)' 정보만 따로 추출해야 하는 경우가 자주 있습니다. 이럴 때 Pandas의 DateTimeIndex.hour 속성을 사용하면 간단하게 해결할 수 있습니다.

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

import pandas as pd

DatetimeIndex 생성하기

기간(periods)은 6개, 빈도(freq)는 'H'(시간 단위)로 설정하여 DatetimeIndex를 생성합니다. 타임존(timezone)은 호주 시드니(Australia/Sydney)로 지정합니다.

datetimeindex = pd.date_range('2021-10-20 02:35:55', periods=6, tz='Australia/Sydney', freq='H')

생성된 DateTimeIndex를 출력해 확인해 보겠습니다.

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

.hour 속성으로 시간 값을 가져옵니다.

print("\nGetting the hour..\n", datetimeindex.hour)

전체 예제 코드

아래는 위 과정을 하나로 정리한 전체 코드입니다.

import pandas as pd

# 기간 6개, 빈도 'H'(시간)로 DatetimeIndex 생성
# 타임존은 Australia/Sydney로 지정
datetimeindex = pd.date_range('2021-10-20 02:35:55', periods=6, tz='Australia/Sydney', freq='H')

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

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

# 시간(hour) 추출
print("\nGetting the hour..\n", datetimeindex.hour)

실행 결과

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

DateTimeIndex...
DatetimeIndex(['2021-10-20 02:35:55+11:00', '2021-10-20 03:35:55+11:00',
'2021-10-20 04:35:55+11:00', '2021-10-20 05:35:55+11:00',
'2021-10-20 06:35:55+11:00', '2021-10-20 07:35:55+11:00'],
dtype='datetime64[ns, Australia/Sydney]', freq='H')

DateTimeIndex frequency...
<Hour>

Getting the hour..
Int64Index([2, 3, 4, 5, 6, 7], dtype='int64')

핵심 정리

출력 결과를 보면 시작 시각 '2021-10-20 02:35:55'부터 1시간씩 증가하는 6개의 타임스탬프가 생성되었고, datetimeindex.hour를 통해 각 타임스탬프의 시간 값인 [2, 3, 4, 5, 6, 7]이 정수형 Index(Int64Index)로 반환된 것을 확인할 수 있습니다.

이처럼 DateTimeIndex에는 .year, .month, .day, .minute, .second 등 다양한 날짜·시간 구성 요소에 접근하는 속성이 제공되므로, 시계열 데이터 분석 시 원하는 단위의 값을 손쉽게 추출할 수 있습니다.