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

Python Pandas - DateTimeIndex에서 특정 시각의 값 인덱스 위치 반환하기

DateTimeIndex에서 하루 중 특정 시각에 해당하는 값들의 인덱스 위치를 반환하려면 DateTimeIndex.indexer_at_time() 메서드를 사용하면 됩니다. 이 메서드는 지정한 시각과 일치하는 요소들의 정수 위치(인덱스)를 배열 형태로 반환해 주기 때문에, 시계열 데이터에서 특정 시간대의 데이터를 빠르게 찾을 때 유용합니다.

필요한 라이브러리 임포트

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

import pandas as pd

DatetimeIndex 생성

시작 시점 '2021-10-30 02:30:50'부터 총 5개의 기간(periods=5)을 가지며, 빈도(freq)는 20분('20T')으로 설정하고, 시간대(timezone)는 'Australia/Adelaide'로 지정하여 DatetimeIndex를 생성합니다.

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

DateTimeIndex 출력

생성된 DateTimeIndex를 화면에 출력해 확인합니다.

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

특정 시각의 인덱스 위치 확인

이제 하루 중 특정 시각, 여기서는 '03:10:50'에 해당하는 값들의 인덱스 위치를 출력합니다.

print("\n특정 시각의 값 인덱스 위치...\n",
datetimeindex.indexer_at_time('2021-10-30 03:10:50'))

전체 예제 코드

다음은 위 내용을 모두 포함한 전체 코드입니다.

import pandas as pd

# periods=5, freq='20T'(20분)인 DatetimeIndex 생성
# 시간대는 Australia/Adelaide로 설정
datetimeindex = pd.date_range('2021-10-30 02:30:50', periods=5, tz='Australia/Adelaide', freq='20T')

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

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

# 특정 시각(03:10:50)에 해당하는 값들의 인덱스 위치 출력
print("\n특정 시각의 값 인덱스 위치...\n",
datetimeindex.indexer_at_time('2021-10-30 03:10:50'))

실행 결과

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

DateTimeIndex...
DatetimeIndex(['2021-10-30 02:30:50+10:30', '2021-10-30 02:50:50+10:30',
'2021-10-30 03:10:50+10:30', '2021-10-30 03:30:50+10:30',
'2021-10-30 03:50:50+10:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='20T')
DateTimeIndex frequency...
<20 * Minutes>

특정 시각의 값 인덱스 위치...
[2]

결과 해석

출력 결과를 보면 생성된 DatetimeIndex는 02:30:50부터 시작해 20분 간격으로 5개의 타임스탬프를 가지고 있습니다. 그중 시각 '03:10:50'에 해당하는 값은 세 번째 요소이므로, indexer_at_time() 메서드는 인덱스 위치 [2](0부터 시작하는 정수 위치)를 반환합니다. 참고로 이 메서드는 날짜가 아닌 '시각'만을 기준으로 매칭하기 때문에, 연도나 월, 일이 달라도 같은 시각이라면 해당 요소들이 모두 반환됩니다.