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

Python Pandas – 시간대 정보가 포함된 datetime.time 객체의 NumPy 배열 반환하기

Pandas에서 시간대(timezone) 정보가 포함된 datetime.time 객체로 구성된 NumPy 배열을 반환하려면 DatetimeIndex의 timetz 속성을 사용하면 됩니다. 이 속성은 Timestamp에서 날짜를 제외한 시간 부분만 추출하면서, 해당 값에 적용된 시간대 정보까지 함께 유지해 줍니다.

필수 라이브러리 임포트

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

import pandas as pd

DatetimeIndex 생성

pd.date_range()를 사용하여 시작 시점부터 총 5개의 요소를 가지는 DatetimeIndex를 생성합니다. 이때 주파수(freq)를 'ns', 즉 나노초(nanosecond) 단위로 지정하고, 시간대는 'Australia/Sydney'로 설정합니다.

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

생성된 DatetimeIndex를 화면에 출력해 확인해 보겠습니다.

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

이어서 timetz 속성을 호출하면, 시간대 정보가 포함된 시간(time) 부분만 담고 있는 NumPy 배열을 얻을 수 있습니다.

print("\nThe numpy array (time part with timezone)..\n", datetimeindex.timetz)

전체 예제 코드

import pandas as pd

# 총 5개의 요소, 주파수는 나노초(ns) 단위
# 시간대는 호주/시드니(Australia/Sydney)로 설정
datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=5, tz='Australia/Sydney', freq='ns')

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

# 시간대 정보가 포함된 시간(time) 부분만 NumPy 배열로 반환
print("\nThe numpy array (time part with timezone)..\n", datetimeindex.timetz)

실행 결과

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

DateTimeIndex...
DatetimeIndex([ '2021-10-20 02:30:50+11:00',
'2021-10-20 02:30:50.000000001+11:00',
'2021-10-20 02:30:50.000000002+11:00',
'2021-10-20 02:30:50.000000003+11:00',
'2021-10-20 02:30:50.000000004+11:00'],
dtype='datetime64[ns, Australia/Sydney]', freq='N')

The numpy array (time part with timezone).. 
[datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>)
 datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>)
 datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>)
 datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>)
 datetime.time(2, 30, 50, tzinfo=<DstTzInfo 'Australia/Sydney' AEDT+11:00:00 DST>)]

정리

timetz 속성은 각 Timestamp에서 연·월·일 정보를 제거한 시간 값만 추출하며, 결과는 Python 표준 라이브러리의 datetime.time 객체들로 구성된 NumPy 배열입니다. 출력 결과에서 볼 수 있듯이 tzinfoAustralia/Sydney(AEDT, UTC+11) 시간대 정보가 그대로 유지되므로, 여러 시간대를 다루는 데이터 분석 작업에서도 시간 정보를 안전하게 활용할 수 있습니다.