시간 빈도로 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분) 등 원하는 빈도 문자열을 지정하면 됩니다.