시계열 분석 마스터하기: Pandas Resample 사용 방법
Published on
Python의 강력한 라이브러리인 Pandas를 사용하면 시계열 데이터의 분석이 간단해집니다. 시계열 분석에서 눈에 띄는 기능 중 하나는 resample()
함수입니다. 이것에 익숙하지 않거나 더 포괄적인 이해를 원한다면, 이 글은 Pandas Resample 사용 방법에 대한 자세한 가이드를 제공합니다.
Python에서 빠르게 데이터 시각화를 만들고 싶으신가요?
PyGWalker는 Jupyter Notebook 기반 환경에서 데이터 분석 및 시각화 워크플로우를 직접 빠르게 처리할 수 있는 오픈 소스 Python 프로젝트입니다.
PyGWalker (opens in a new tab)는 Pandas Dataframe(또는 Polars Dataframe)을 시각적 사용자 인터페이스(UI)로 변환하여 변수를 드래그앤드롭하여 쉽게 그래프를 생성할 수 있습니다. 다음과 같은 코드를 사용하십시오.
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
이제 다음 온라인 노트북에서 PyGWalker를 바로 실행할 수 있습니다.
그리고 GitHub에서 ⭐️을 꼭 눌러주세요!
Pandas Resample의 강력함
그룹화 함수인 groupby()
로 특정 범주에 따라 데이터를 그룹화하는 것처럼, resample()
은 다른 시간 간격에서 데이터를 그룹화할 수 있습니다. 이 특별한 함수는 시계열 데이터의 데이터 변환 및 정리를 강화합니다. 그러나 전체 잠재력을 활용하려면 핵심 매개변수와 기본 개념을 이해하는 것이 필수적입니다.
리샘플링의 핵심 개념
리샘플링은 크게 두 가지 유형으로 분류할 수 있습니다.
- Upsampling(업샘플링): 이것은 데이터의 빈도를 증가시키는 것이며, 예를 들어 연간 데이터를 월간 데이터로 변환하는 것입니다. 이제 더 많은 데이터 포인트가 시계열을 나타냅니다.
- Downsampling(다운샘플링): 이것은 업샘플링의 반대입니다. 즉, 월간 데이터를 연간 데이터로 변환하는 것과 같은 데이터의 빈도를 감소시킵니다.
Resample의 주요 매개변수 이해
이제 resample()
을 효과적으로 사용하기 위해 마스터해야하는 필수 매개변수를 깊이 파헤쳐 보겠습니다.
'rule' 매개변수
규칙(rule)은 데이터를 리샘플하는 빈도를 지정하는 중요한 매개변수입니다. 시계열을 5분 간격으로 또는 30분 간격으로 그룹화하려면 규칙 매개변수를 사용하면 됩니다.
# 5분 간격으로 데이터 리샘플링
df.resample(rule='5T')
'axis' 매개변수
axis 매개변수 (기본값은 0)는 행 또는 열을 따라 리샘플링할지를 결정합니다. 대부분의 시계열 데이터에서는 axis=0(행을 따라 리샘플링)이 일반적으로 사용됩니다.
# 열을 따라 데이터 리샘플링
df.resample(rule='5T', axis=1)
'closed' 매개변수
closed 매개변수는 간격의 어느 쪽이 닫혀있는지를 제어합니다. 즉, 해당 간격에 대해 리샘플링된 데이터는 포함되지 않습니다. 시간 샘플의 모서리에 데이터를 포함할지를 결정할 때 특히 유용합니다.
# 간격의 오른쪽을 닫은 데이터 리샘플링
df.resample(rule='5T', closed='right')
'label' 매개변수
이 매개변수는 리샘플링 후 새로 생성된 bin에 레이블을 지정하는 데 도움이 됩니다. bin은 시작과 끝 두 가지면이 있습니다. 이 매개변수는 새로운 bin의 레이블을 어떻게 지정할지 결정합니다.
# 오른쪽에 레이블을 달고 데이터 리샘플링
df.resample(rule='5T', label='right')
'convention' 매개변수
convention 매개변수는 주로 업-샘플링에서 사용되며 데이터 포인트를 어디에 배치할지 결정합니다.
# convention을 'start'로 설정한 데이터 리샘플링
df.resample(rule='5T', convention='start')
다른 매개변수도 더 있지만, 이러한 매개변수는 리샘플링 함수를 효과적으로 활용하는 기초를 구성합니다.
모두 함께 적용: 판다스 리샘플 사용 예시
이해를 정리하기 위해 더 자세한 예제를 살펴보겠습니다. 10시부터 11시까지 5분마다 데이터가 기록된 시계열 데이터가 있다고 가정합니다. 이제 우리는 이 데이터를 15분 간격으로 리샘플링하려고 합니다.
import pandas as pd
# 날짜 범위 생성
date_range = pd.date_range(start='10:00', end='11:00', freq='5T')
# 랜덤 DataFrame 생성
df = pd.DataFrame(date_range, columns=['date'])
df['data'] = np.random.randint(0,100,size=(len(date_range)))
# 날짜 열을 인덱스로 설정
df.set_index('date', inplace=True)
# 데이터를 15분 간격으로 재샘플링
resampled_data = df.resample(rule='15T').mean()
이 예시에서는, 먼저 10시부터 11시까지 5분 간격으로 데이터 포인트가 있는 DataFrame을 생성했습니다. 그 다음, resample()
을 사용하여 각 구간에 속한 데이터 포인트의 평균을 취해 15분 간격으로 데이터를 재샘플링하였습니다.
재샘플링 기술을 숙달하면 시계열 분석 기술을 획기적으로 개선할 수 있습니다. 다양한 매개변수와 기법을 실험하여 그 효과를 더 잘 이해해보세요.