날짜 오프셋(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'(분) 등 다양한 빈도 문자열을 사용할 수 있으므로, 분석 목적에 맞게 간격을 조절하면 됩니다.