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

Python Pandas – TimedeltaIndex에서 초 빈도로 floor(내림) 연산 수행하기

개요

TimedeltaIndex에 대해 초(second) 빈도 단위로 내림(floor) 연산을 수행하려면 TimedeltaIndex.floor() 메서드를 사용하면 됩니다. 초 빈도를 지정하려면 freq 매개변수에 값 'S'를 전달합니다.

floor 연산은 지정된 빈도보다 낮은 단위의 시간 성분을 잘라내어 가장 가까운 아래쪽 값으로 맞추는 기능을 합니다. 예를 들어 밀리초, 마이크로초, 나노초 등의 소수점 이하 값이 제거됩니다.

단계별 구현 방법

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

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)

freq='S'를 지정하여 초 빈도 단위로 floor 연산을 수행합니다.

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

전체 예제 코드

다음은 위 과정을 하나로 정리한 전체 코드입니다.

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의 각 구성 요소(일, 시, 분, 초 등)를 데이터프레임으로 반환
print("\nThe Dataframe of the components of TimeDeltas...\n", tdIndex.components)

# 초 빈도 단위로 floor 연산 수행
# 초 빈도를 위해 freq='S' 사용
print("\nPerforming Floor operation with seconds frequency...\n",
tdIndex.floor(freq='S'))

실행 결과

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

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 seconds frequency...
TimedeltaIndex(['5 days 08:20:00', '0 days 17:42:19', '7 days 11:16:02',
'0 days 22:35:25'],
dtype='timedelta64[ns]', freq=None)

결과 해석

실행 결과를 보면 floor 연산 적용 전에는 각 timedelta 값에 마이크로초와 나노초 단위의 소수 값이 포함되어 있었지만, freq='S'로 floor 연산을 수행한 후에는 모든 값이 초 단위로 내림 처리되어 깔끔하게 정리된 것을 확인할 수 있습니다. 예를 들어 '5 days 08:20:00.000035045''5 days 08:20:00'으로 변환되었습니다.