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

Python Pandas – 마이크로초 빈도로 DateTimeIndex에 ceil 연산 수행하는 방법

개요

Pandas에서 DateTimeIndex.ceil() 메서드를 사용하면 날짜·시간 인덱스(DatetimeIndex)의 각 타임스탬프를 지정한 빈도 단위로 올림(ceil) 처리할 수 있습니다. 마이크로초(microseconds) 빈도로 올림하려면 freq 매개변수에 'us' 값을 전달하면 됩니다.

구현 단계

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

import pandas as pd

기간(periods)은 5, 빈도는 40초('40S')로 설정하여 DatetimeIndex를 생성합니다. 시간대는 호주 애들레이드(Australia/Adelaide)로 지정했습니다.

datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='40S')

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

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

이제 마이크로초 빈도로 ceil 연산을 수행합니다. 마이크로초 빈도에는 'us'를 사용합니다.

print("\nPerforming ceil operation with microseconds frequency...\n",
datetimeindex.ceil(freq='us'))

전체 예제 코드

import pandas as pd

# 기간 5, 빈도 40초('40S')인 DatetimeIndex 생성
# 시간대는 Australia/Adelaide로 설정
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='40S')

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

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

# 마이크로초 빈도('us')로 ceil 연산 수행
print("\nPerforming ceil operation with microseconds frequency...\n",
datetimeindex.ceil(freq='us'))

실행 결과

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

DateTimeIndex...
DatetimeIndex(['2021-10-18 07:20:32.261811624+10:30',
               '2021-10-18 07:21:12.261811624+10:30',
               '2021-10-18 07:21:52.261811624+10:30',
               '2021-10-18 07:22:32.261811624+10:30',
               '2021-10-18 07:23:12.261811624+10:30'],
              dtype='datetime64[ns, Australia/Adelaide]', freq='40S')
DateTimeIndex frequency...
<40 * Seconds>

Performing ceil operation with microseconds frequency...
DatetimeIndex(['2021-10-18 07:20:32.261812+10:30',
               '2021-10-18 07:21:12.261812+10:30',
               '2021-10-18 07:21:52.261812+10:30',
               '2021-10-18 07:22:32.261812+10:30',
               '2021-10-18 07:23:12.261812+10:30'],
              dtype='datetime64[ns, Australia/Adelaide]', freq=None)

결과 해설

원본 타임스탬프는 나노초까지 표현된 값입니다(예: .261811624). 여기에 ceil(freq='us')를 적용하면 가장 가까운 마이크로초 단위로 올림되어 .261812가 됩니다. 즉, 마이크로초보다 세밀한 나노초 자릿수가 올림 처리된 것입니다. 또한 ceil 연산을 수행한 결과 인덱스에는 기존의 40초 빈도 정보가 유지되지 않아 freq=None으로 표시됩니다.