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

Python Pandas – 시간(Hourly) 빈도로 DateTimeIndex에 ceil(올림) 연산 수행하는 방법

시간 빈도로 DateTimeIndex에 ceil 연산 수행하기

Pandas에서 시간(hourly) 빈도를 기준으로 DateTimeIndex의 날짜·시간 값을 올림 처리하려면 DateTimeIndex.ceil() 메서드를 사용합니다. freq 매개변수에 'H'를 지정하면 각 타임스탬프가 다음 정각으로 올림되어, 분·초 단위의 값이 깔끔하게 정리된 인덱스를 얻을 수 있습니다.

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

import pandas as pd

periods=5, 빈도는 20분('20min'), 시간대는 호주 애들레이드(Australia/Adelaide)로 지정하여 DatetimeIndex를 생성합니다.

datetimeindex = pd.date_range('2021-09-29 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='20min')

이어서 freq='H' 옵션을 사용해 시간 빈도 기준의 ceil 연산을 수행하고 결과를 출력합니다.

print('\nPerforming ceil operation with hourly frequency...\n',
datetimeindex.ceil(freq='H'))

전체 예제 코드

지금까지의 내용을 하나로 묶은 전체 코드는 다음과 같습니다.

import pandas as pd

# periods=5, 빈도는 분(minute) 단위인 DatetimeIndex 생성
# 시간대는 호주 애들레이드(Australia/Adelaide)
datetimeindex = pd.date_range('2021-09-29 07:20:32.261811624', periods=5,
tz='Australia/Adelaide', freq='20min')

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

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

# 시간(hourly) 빈도 기준으로 ceil 연산 수행
# 시간 빈도에는 'H'를 사용
print('\nPerforming ceil operation with hourly frequency...\n',
datetimeindex.ceil(freq='H'))

실행 결과

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

DateTimeIndex...
DatetimeIndex(['2021-09-29 07:20:32.261811624+09:30',
'2021-09-29 07:40:32.261811624+09:30',
'2021-09-29 08:00:32.261811624+09:30',
'2021-09-29 08:20:32.261811624+09:30',
'2021-09-29 08:40:32.261811624+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq='20T')
DateTimeIndex frequency...
<20 * Minutes>

Performing ceil operation with hourly frequency...
DatetimeIndex(['2021-09-29 08:00:00+09:30', '2021-09-29 08:00:00+09:30',
'2021-09-29 09:00:00+09:30', '2021-09-29 09:00:00+09:30',
'2021-09-29 09:00:00+09:30'],
dtype='datetime64[ns, Australia/Adelaide]', freq=None)

결과 해석

원본 인덱스의 타임스탬프는 07:20:32, 07:40:32, 08:00:32, 08:20:32, 08:40:32였습니다. 여기에 freq='H'로 ceil 연산을 적용하면 각 값이 다음 정각인 08:00:00 또는 09:00:00으로 올림됩니다. 예를 들어 07:20:32는 08:00:00으로, 08:00:32는 09:00:00으로 변환되는 식입니다.

또한 ceil 연산 결과의 freq 속성은 None으로 표시됩니다. 올림 처리 과정에서 원래의 규칙적인 간격 정보가 유지되지 않기 때문입니다.

참고: floor() 및 round()

ceil() 외에도 DateTimeIndex는 내림을 위한 floor(), 반올림을 위한 round() 메서드를 제공합니다. 사용 방법은 동일하며, freq 매개변수에 'H'(시간), 'D'(일), '30min'(30분) 등 원하는 빈도 문자열을 지정하면 됩니다.