Pandas에서 DateTimeIndex.nanosecond 속성을 사용하면 특정 시계열 빈도로 구성된 DateTimeIndex에서 나노초(nanosecond) 값을 손쉽게 추출할 수 있습니다. 이 글에서는 나노초 단위 빈도(freq='ns')를 가진 DatetimeIndex를 만들고, 각 시점의 나노초 값을 가져오는 과정을 예제와 함께 살펴보겠습니다.
1. 라이브러리 임포트
가장 먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
2. 나노초 빈도의 DatetimeIndex 생성
기준 시각 '2021-10-20 02:30:50'부터 6개의 시점(periods=6)을 생성하고, 빈도는 나노초(ns)로, 시간대(timezone)는 'Australia/Sydney'로 지정합니다.
datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Sydney', freq='ns')3. DateTimeIndex 확인 및 나노초 추출
생성된 DateTimeIndex를 출력하고, nanosecond 속성으로 각 시점의 나노초 값을 확인합니다.
print("DateTimeIndex...\n", datetimeindex)
print("\nGetting the nanoseconds..\n", datetimeindex.nanosecond)전체 예제 코드
지금까지의 내용을 하나의 코드로 정리하면 다음과 같습니다.
import pandas as pd
# period 6개, 빈도 ns(나노초)인 DatetimeIndex 생성
# 시간대는 Australia/Sydney로 지정
datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Sydney', freq='ns')
# DateTimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)
# DateTimeIndex의 빈도 출력
print("DateTimeIndex frequency...\n", datetimeindex.freq)
# 나노초 값 추출
print("\nGetting the nanoseconds..\n", datetimeindex.nanosecond)실행 결과
위 코드를 실행하면 아래와 같은 결과가 출력됩니다.
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', '2021-10-20 02:30:50.000000005+11:00'], dtype='datetime64[ns, Australia/Sydney]', freq='N') DateTimeIndex frequency... <Nano> Getting the nanoseconds.. Int64Index([0, 1, 2, 3, 4, 5], dtype='int64')
결과 해석
실행 결과를 보면 기준 시각 '2021-10-20 02:30:50'에서 시작해 1나노초씩 증가하는 6개의 시점이 생성된 것을 확인할 수 있습니다. datetimeindex.freq는 <Nano>로 표시되며, 이는 빈도가 나노초 단위임을 의미합니다.
마지막으로 datetimeindex.nanosecond 속성은 각 시점의 나노초 부분만 정수형(Int64Index)으로 반환합니다. 첫 번째 시점은 나노초가 0이고, 이후 시점부터 1, 2, 3, 4, 5로 1나노초씩 증가한 값이 출력됩니다.
이처럼 DateTimeIndex.nanosecond 속성을 활용하면 초미세 단위의 시간 데이터에서 나노초 정보를 간편하게 분리해 낼 수 있으며, 고빈도 금융 데이터나 로그 타임스탬프 분석 등에 유용하게 활용할 수 있습니다.