rolling

rolling함수란?

rolling 함수는 pandas 라이브러리에서 제공하는 중요한 시계열 데이터 분석 도구입니다. 이 함수는 시간에 따라 이동하는 윈도우(rolling window)를 생성하여 연속된 데이터 포인트들의 집합에 대해 계산을 수행합니다.

rolling 함수의 주요 특징

1.
윈도우 크기 지정: window 매개변수를 통해 분석하고자 하는 데이터 포인트의 개수를 지정할 수 있습니다. 예를 들어, window=3이면 3개의 연속된 데이터 포인트를 하나의 윈도우로 묶어 분석합니다.
2.
통계 계산: 각 윈도우 내에서 평균(mean), 합계(sum), 표준편차(std), 최소값(min), 최대값(max) 등 다양한 통계값을 계산할 수 있습니다.
3.
중심 정렬 옵션: center 매개변수를 통해 윈도우의 중심을 기준으로 계산할지, 끝점을 기준으로 계산할지 선택할 수 있습니다.
4.
최소 관측치 설정: min_periods 매개변수를 사용하여 계산에 필요한 최소 유효 데이터 포인트 수를 지정할 수 있습니다.

rolling 함수는 활용

• 주가 데이터의 이동평균 계산
• 시계열 데이터의 노이즈 제거
• 트렌드 분석
• 계절성 패턴 파악
예를 들어, 주식 시장에서 20일 이동평균선을 계산하고자 할 때, df['Close'].rolling(window=20).mean()과 같이 사용할 수 있습니다. 이는 20일간의 종가 데이터를 순차적으로 평균 내어 트렌드를 파악하는데 도움을 줍니다. 또한, rolling 함수는 결측치(NaN)를 자동으로 처리하며, 사용자 정의 함수를 apply 메서드를 통해 적용할 수도 있어 매우 유연한 분석이 가능합니다.

rolling함수 사용법

rolling 함수 기본적인 사용법

window: 분석하고 싶은 데이터의 범위를 정합니다. 예를 들어 3을 입력하면 3개의 데이터씩 묶어서 계산합니다.
min_periods: 최소한 몇 개의 데이터가 있어야 계산할지 정합니다. 따로 설정하지 않으면 window와 같은 값을 사용합니다.
center: True로 설정하면 현재 데이터를 가운데에 두고 계산합니다. False면 마지막에 둡니다.
win_type: 데이터의 가중치를 어떻게 줄지 정합니다. 각각의 데이터에 다른 중요도를 부여할 수 있습니다.
import pandas as pd import numpy as np # 샘플 데이터 생성 df = pd.DataFrame({ 'date': pd.date_range(start='2024-01-01', periods=10), 'value': [10, 15, 13, 17, 19, 16, 14, 18, 20, 22] }) # 기본적인 rolling 평균 계산 df['MA3'] = df['value'].rolling(window=3).mean() # 최소 관측치 설정 df['MA3_min2'] = df['value'].rolling(window=3, min_periods=2).mean() # 중심 정렬 사용 df['MA3_centered'] = df['value'].rolling(window=3, center=True).mean() # 다양한 통계량 계산 df['MA3_std'] = df['value'].rolling(window=3).std() df['MA3_sum'] = df['value'].rolling(window=3).sum() df['MA3_max'] = df['value'].rolling(window=3).max()
Python
복사

고급 사용 예시

1. 사용자 정의 함수 적용

사용자가 직접 만든 함수를 rolling 연산에 적용할 수 있습니다.
def custom_range(x): return x.max() - x.min() # 최대값과 최소값의 차이 계산 result = df['value'].rolling(window=3).apply(custom_range)
Python
복사

2. 지수 가중 이동평균

최근 데이터에 더 높은 가중치를 부여하는 이동평균을 계산합니다.
# span=3은 최근 3개 데이터에 더 높은 가중치 부여 weighted_avg = df['value'].ewm(span=3, adjust=False).mean()
Python
복사

3. 시간 기반 윈도우

날짜/시간을 기준으로 rolling 연산을 수행합니다.
# 7일 단위로 평균 계산 weekly_avg = df.set_index('date')['value'].rolling('7D').mean()
Python
복사

4. 다중 컬럼 처리

여러 컬럼에 대해 각각 다른 연산을 수행할 수 있습니다.
# 가격은 평균과 표준편차, 거래량은 합계와 최대값 계산 result = df[['price', 'volume']].rolling(window=3).agg({ 'price': ['mean', 'std'], 'volume': ['sum', 'max'] })
Python
복사

5. 고급 매개변수 활용

다양한 매개변수를 사용하여 rolling 연산을 세밀하게 조정할 수 있습니다:
win_type: 데이터 가중치 조정 (예: 'boxcar', 'triang', 'blackman')
closed: 윈도우 경계 설정 (예: 'right', 'left', 'both', 'neither')
method: 계산 방식 지정 (예: 'single', 'table')
이러한 고급 기능들은 금융 데이터 분석이나 시계열 예측 모델 구축에 매우 유용합니다.

응원공유로 힘이 되어주세요!

여러분의 따뜻한 응원은 더 많은 무료 컨텐츠정보 공유의 원동력이 됩니다.
소중한 하트댓글, 리포스트는 저희에게 큰 힘이 됩니다!
혹시 댓글로 어떤 말을 남겨야 할지 모르시겠다구요? 걱정마세요!
간단히 "으뜸이네 파이썬!!!" 이라고 남겨주셔도 저희에겐 큰 격려가 됩니다.