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

Python Pandas – to_perioddelta()로 인덱스 값과 PeriodArray 변환 결과 간 차이의 TimedeltaArray 계산하기

Python Pandas – 인덱스 값과 PeriodArray 변환 결과 간 차이의 TimedeltaArray 계산하기

Pandas에서 DatetimeIndex의 원래 값과 PeriodArray로 변환된 인덱스 사이의 차이를 TimedeltaArray로 계산하려면 datetimeindex.to_perioddelta() 메서드를 사용합니다. 이때 freq 매개변수를 통해 주기를 지정할 수 있습니다.

라이브러리 임포트

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

import pandas as pd

DatetimeIndex 생성

데이터 포인트는 5개, 빈도는 '2Y', 즉 2년 단위로 DatetimeIndex를 생성합니다.

datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, freq='2Y')

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

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

PeriodDelta 계산

DatetimeIndex 값을 PeriodArray로 변환한 결과와의 차이를 TimedeltaArray로 계산합니다. 여기서는 "freq" 매개변수에 'M', 즉 월(Month) 단위 주기를 지정했습니다.

print("\nConvert DateTimeIndex to PeriodDelta...\n",
datetimeindex.to_perioddelta(freq='M'))

예제

다음은 전체 예제 코드입니다.

import pandas as pd

# 데이터 포인트 5개, 빈도는 Y(연도) 기준 2년 단위의 DatetimeIndex 생성
datetimeindex = pd.date_range('2021-10-18 07:20:32.261811624', periods=5, freq='2Y')

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

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

# DateTimeIndex를 Period로 변환
# "freq" 매개변수에 'M'을 지정하여 월 단위 주기 설정
print("\nConvert DateTimeIndex to Period...\n",
datetimeindex.to_period(freq='M'))

# 인덱스 값과 PeriodArray로 변환된 인덱스 간 차이의 TimedeltaArray 계산
# "freq" 매개변수에 'M'을 지정하여 Period 주기 설정
print("\nConvert DateTimeIndex to PeriodDelta...\n",
datetimeindex.to_perioddelta(freq='M'))

출력 결과

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

DateTimeIndex...
DatetimeIndex(['2021-12-31 07:20:32.261811624',
'2023-12-31 07:20:32.261811624',
'2025-12-31 07:20:32.261811624',
'2027-12-31 07:20:32.261811624',
'2029-12-31 07:20:32.261811624'],
dtype='datetime64[ns]', freq='2A-DEC')
DateTimeIndex frequency...
<2 * YearEnds: month=12>

Convert DateTimeIndex to Period...
PeriodIndex(['2021-12', '2023-12', '2025-12', '2027-12', '2029-12'], dtype='period[M]')

Convert DateTimeIndex to PeriodDelta...
TimedeltaIndex(['30 days 07:20:32.261811624', '30 days 07:20:32.261811624',
'30 days 07:20:32.261811624', '30 days 07:20:32.261811624',
'30 days 07:20:32.261811624'],
dtype='timedelta64[ns]', freq=None)