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

Python Pandas – DateTimeIndex에서 분 단위 빈도로 floor(내림) 연산 수행하는 방법

Pandas에서 DateTimeIndex에 대해 분(minute) 단위 빈도로 내림(floor) 연산을 수행하려면 DateTimeIndex.floor() 메서드를 사용합니다. 이때 freq 매개변수에 'T'(분) 값을 지정하면 됩니다.

참고로 pandas 2.2 이상 버전에서는 'T' 별칭이 더 이상 사용되지 않으므로(deprecated), 대신 'min'을 사용하는 것이 권장됩니다.

구현 단계

1. 필요한 라이브러리 임포트

import pandas as pd

2. DatetimeIndex 생성

시작 시점 '2021-10-18 07:20:32.261811624'부터 5개의 타임스탬프를 생성하고, 빈도는 40초('40S'), 시간대는 호주 애들레이드(Australia/Adelaide)로 설정합니다.

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

3. DateTimeIndex 출력

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

4. 분 단위 빈도로 floor 연산 수행

freq 매개변수에 'T'(분)를 지정하면 각 타임스탬프가 해당 분의 시작 지점(초 이하 제거)으로 내려갑니다.

print("\nPerforming floor operation with minute frequency...\n",
datetimeindex.floor(freq='T'))

전체 예제 코드

import pandas as pd

# 5개의 타임스탬프, 빈도 40초, 시간대 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)

# 분(minute) 값 추출
res = datetimeindex.minute

# 분만 출력
print("\nThe minute from DateTimeIndex...\n", res)

# 분 단위 빈도로 floor 연산 수행 ('T' 사용)
print("\nPerforming floor operation with minute frequency...\n",
datetimeindex.floor(freq='T'))

실행 결과

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>

The minute from DateTimeIndex...
Int64Index([20, 21, 21, 22, 23], dtype='int64')
Performing floor operation with minute frequency...
DatetimeIndex(['2021-10-18 07:20:00+10:30', '2021-10-18 07:21:00+10:30',
               '2021-10-18 07:21:00+10:30', '2021-10-18 07:22:00+10:30',
               '2021-10-18 07:23:00+10:30'],
              dtype='datetime64[ns, Australia/Adelaide]', freq=None)

결과 해석

floor 연산 결과에서 초와 나노초가 잘리고 각 타임스탬프가 해당 분의 시작(00초)으로 내려간 것을 확인할 수 있습니다. 예를 들어 07:20:32.261...07:20:00으로, 07:21:12.261...07:21:00으로 변환되었습니다. 또한 floor 연산 후에는 원래의 40초 빈도(freq='40S') 정보가 유지되지 않고 freq=None으로 표시된다는 점도 참고하세요.