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

Python Pandas – TimeDeltaIndex에서 마이크로초(us) 빈도로 floor 연산 수행하는 방법

마이크로초(microseconds) 빈도를 기준으로 TimeDeltaIndex에 floor(내림) 연산을 수행하려면 TimeDeltaIndex.floor() 메서드를 사용합니다. 이때 마이크로초 빈도를 지정하려면 freq 매개변수에 'us' 값을 전달하면 됩니다.

1단계: 라이브러리 임포트

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

import pandas as pd

2단계: TimeDeltaIndex 객체 생성

TimeDeltaIndex 객체를 생성합니다. 여기서는 data 매개변수를 사용해 timedelta 형식의 데이터를 설정했습니다.

tdIndex = pd.TimedeltaIndex(data =['5 day 8h 20min 35us 45ns', '+17:42:19.999999',
'7 day 3h 08:16:02.000055', '+22:35:25.999999'])

3단계: TimedeltaIndex 출력

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

print("TimedeltaIndex...\n", tdIndex)

4단계: 마이크로초 빈도로 floor 연산 수행

마이크로초 빈도를 기준으로 TimeDeltaIndex에 floor 연산을 수행합니다. 마이크로초 빈도를 나타내기 위해 'us'를 사용했습니다.

print("\nPerforming Floor operation with microseconds frequency...\n",
tdIndex.floor(freq='us'))

전체 예제 코드

지금까지의 과정을 하나로 합친 전체 코드는 다음과 같습니다.

import pandas as pd

# TimeDeltaIndex 객체 생성
# data 매개변수를 사용해 timedelta 형식의 데이터를 설정
tdIndex = pd.TimedeltaIndex(data =['5 day 8h 20min 35us 45ns', '+17:42:19.999999',
'7 day 3h 08:16:02.000055', '+22:35:25.999999'])

# TimedeltaIndex 출력
print("TimedeltaIndex...\n", tdIndex)

# TimeDelta 구성 요소(components)를 데이터프레임 형태로 반환
print("\nThe Dataframe of the components of TimeDeltas...\n", tdIndex.components)

# 마이크로초 빈도로 TimeDeltaIndex에 floor 연산 수행
# 마이크로초 빈도에는 'us' 사용
print("\nPerforming Floor operation with microseconds frequency...\n",
tdIndex.floor(freq='us'))

실행 결과

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

TimedeltaIndex...
TimedeltaIndex(['5 days 08:20:00.000035045', '0 days 17:42:19.999999',
'7 days 11:16:02.000055', '0 days 22:35:25.999999'],
dtype='timedelta64[ns]', freq=None)

The Dataframe of the components of TimeDeltas...
    days hours minutes seconds milliseconds microseconds nanoseconds
0     5     8      20      0          0           35         45
1     0    17      42     19        999          999          0
2     7    11      16      2          0           55          0
3     0    22      35     25        999          999          0

Performing Floor operation with microseconds frequency...
TimedeltaIndex(['5 days 08:20:00.000035', '0 days 17:42:19.999999',
'7 days 11:16:02.000055', '0 days 22:35:25.999999'],
dtype='timedelta64[ns]', freq=None)

정리

floor 연산은 지정된 빈도 단위보다 더 세밀한 값을 잘라내어 아래 방향으로 반올림하는 기능입니다. 위 예제에서 나노초(nanoseconds) 값인 45ns가 잘려나간 것을 확인할 수 있습니다. 즉, freq='us'를 적용하면 마이크로초보다 작은 단위의 시간 정보가 제거되어 결과가 마이크로초 단위로 정렬됩니다. 참고로 밀리초 빈도에는 'ms', 초 빈도에는 's'처럼 원하는 정밀도에 맞춰 freq 값을 자유롭게 변경해 사용할 수 있습니다.