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

Python Pandas – 날짜 오프셋 기준으로 시계열 데이터의 마지막 구간 선택하기

날짜 오프셋(date offset)을 기준으로 시계열 데이터의 마지막 구간을 선택하려면 last() 메서드를 사용하면 됩니다. 이 메서드는 지정한 기간에 해당하는 최근 행들만 손쉽게 추출할 수 있어 시계열 분석에서 매우 유용하게 활용됩니다.

1. 날짜 인덱스 생성하기

먼저 periods(생성할 날짜 개수)와 freq(날짜 빈도) 옵션을 사용해 날짜 인덱스를 설정합니다. 여기서 freq는 날짜 간격을 의미하며, '3D'는 3일 간격을 뜻합니다.

i = pd.date_range('2021-07-15', periods=5, freq='3D')

2. DataFrame 생성하기

위에서 만든 날짜 인덱스를 그대로 활용해 DataFrame을 생성합니다.

dataFrame = pd.DataFrame({'k': [1, 2, 3, 4, 5]}, index=i)

3. last() 메서드로 마지막 구간 선택하기

마지막 4일(4D)에 해당하는 행을 가져오려면 다음과 같이 작성합니다.

dataFrame.last('4D')

전체 예제 코드

import pandas as pd

# 5개의 기간(periods)과 3일 간격(freq='3D')으로 날짜 인덱스 설정
i = pd.date_range('2021-07-15', periods=5, freq='3D')

# 위 인덱스를 사용해 DataFrame 생성
dataFrame = pd.DataFrame({'k': [1, 2, 3, 4, 5]}, index=i)
print("DataFrame...\n", dataFrame)

# 마지막 4일(4D)에 해당하는 행만 추출
print("마지막 구간 행...\n", dataFrame.last('4D'))

실행 결과

DataFrame...
             k
2021-07-15   1
2021-07-18   2
2021-07-21   3
2021-07-24   4
2021-07-27   5
마지막 구간 행...
             k
2021-07-24   4
2021-07-27   5

핵심 정리

last() 메서드는 '4D', '1W', '12H'처럼 날짜 오프셋 문자열을 인자로 받아, 해당 기간에 포함되는 마지막 행들을 반환합니다. 실행 결과를 보면 전체 5행 중 마지막 4일 범위인 7월 24일과 7월 27일 데이터만 선택된 것을 확인할 수 있습니다.

이 메서드가 정상적으로 동작하려면 DataFrame의 인덱스가 DatetimeIndex 또는 PeriodIndex여야 합니다. 따라서 시계열 데이터를 다룰 때는 pd.date_range() 등으로 날짜를 인덱스로 설정해 두는 것이 좋습니다. 참고로 freq에는 'D'(일), 'W'(주), 'H'(시간), 'T'(분) 등 다양한 빈도 문자열을 사용할 수 있으므로, 분석 목적에 맞게 간격을 조절하면 됩니다.