[파이썬] pandas에서 시계열 리샘플링 (resample)

시계열 데이터는 시간에 따라 존재하는 데이터 포인트의 연속적인 시퀀스를 말합니다. 이러한 데이터를 다루기 위해 pandas는 강력한 도구와 함수들을 제공합니다. 그 중 하나가 시계열 리샘플링(resample)입니다.

시계열 리샘플링은 기존의 시계열 데이터를 더 크거나 작은 주기로 재샘플링하는 작업입니다. 이는 일별 데이터를 주간 데이터로 집계하거나, 시간 단위 데이터를 분 단위로 리샘플링하는 등의 작업을 가능하게 해줍니다.

Resample 함수

pandas는 시계열 데이터를 리샘플링하기 위해 resample 함수를 제공합니다. resample 함수는 두 가지 핵심 파라미터를 받습니다:

  1. rule: 리샘플링할 주기를 나타내는 문자열입니다. 주기는 ‘D’ (일), ‘W’ (주), ‘M’ (월), ‘Q’ (분기), ‘Y’ (년) 등으로 표시됩니다.
  2. how: 리샘플링할 때 각 그룹의 데이터를 어떻게 처리할지를 나타내는 문자열입니다. 일반적으로는 수합(sum), 평균(mean), 최댓값(max), 최솟값(min) 등이 사용됩니다.

예시

가상의 주식 가격 데이터로 예시를 들어보겠습니다. 아래는 5일 동안의 주식 가격 데이터입니다.

import pandas as pd

# 가상의 주식 가격 데이터
data = {'date': ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05'],
        'price': [100, 105, 98, 102, 110]}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
print(df)
             price
date             
2022-01-01    100
2022-01-02    105
2022-01-03     98
2022-01-04    102
2022-01-05    110

이제, 이 데이터를 주간 단위로 리샘플링해보겠습니다. 리샘플링된 결과는 해당 주간의 마지막 가격으로 표시됩니다.

weekly_data = df.resample('W').last()
print(weekly_data)
            price
date            
2022-01-02    105
2022-01-09    110

위의 예시에서는 resample('W')를 사용하여 주간 단위로 리샘플링했습니다. last() 함수를 사용하여 해당 주간의 마지막 가격을 선택했습니다. 결과적으로, 주간 단위로 리샘플링된 데이터를 얻을 수 있었습니다.

결론

pandas의 시계열 리샘플링 기능은 시간에 따라 변화하는 데이터를 처리하는데 유용한 도구입니다. resample 함수를 사용하여 다양한 주기로 리샘플링하고, 데이터를 집계하여 분석할 수 있습니다. 이를 통해 시계열 데이터의 특성을 파악하고 예측하는 작업을 수행할 수 있습니다.