실패는 성공을 위한 밑거름

파이선 롤링의 역할 | python rolling 본문

devops/back-end

파이선 롤링의 역할 | python rolling

레드매실 2025. 3. 9. 11:08
롤링에대해서 어떻게 되는지 예시로 설명
 
몇 초 동안 이성 처리 완료

롤링(rolling)은 Pandas에서 데이터를 일정한 구간(윈도우)으로 나누어 그 구간별로 계산을 수행하는 기능입니다. 예를 들어, 어떤 시계열 데이터가 있을 때, 연속된 몇 개의 값에 대해 평균, 합계, 혹은 다른 계산을 수행하고자 할 때 사용합니다.


예시로 설명하기

1. 데이터 준비

예를 들어, 숫자 데이터 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]가 있다고 해봅시다.

python
복사편집
import pandas as pd data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

2. 롤링 윈도우 적용

여기서 윈도우 크기(window) 를 3으로 설정하면, 연속된 3개의 데이터를 묶어서 계산하게 됩니다.
즉, 다음과 같이 구간(윈도우)이 형성됩니다:

  • 첫 번째 윈도우: [1, 2, 3]
  • 두 번째 윈도우: [2, 3, 4]
  • 세 번째 윈도우: [3, 4, 5]
  • ...
  • 마지막 윈도우: [8, 9, 10]

3. 각 윈도우에 연산 적용 (예: 평균)

각 윈도우에 대해 평균을 구하면 아래와 같이 됩니다:

  • 첫 번째 윈도우: (1+2+3)/3 = 2.0
  • 두 번째 윈도우: (2+3+4)/3 = 3.0
  • 세 번째 윈도우: (3+4+5)/3 = 4.0
  • ...
  • 마지막 윈도우: (8+9+10)/3 = 9.0

이를 코드로 작성하면 다음과 같습니다:

python
복사편집
rolling_mean = data.rolling(window=3).mean() print(rolling_mean)

4. 결과 출력

출력 결과는 아래와 같이 됩니다:

Index값
0 NaN
1 NaN
2 2.0
3 3.0
4 4.0
5 5.0
6 6.0
7 7.0
8 8.0
9 9.0

즉, 처음 두 개의 인덱스는 3개의 데이터를 채우지 못했기 때문에 NaN이 나오고, 이후부터는 각 윈도우에 대해 계산된 값이 나타납니다.


추가: 롤링과 선형 회귀

원래 질문에서 사용한 코드에서는, 단순 평균이 아니라 각 윈도우에 대해 선형 회귀를 적용하여 기울기(변화율)를 구하는 작업을 합니다.
예를 들어, 윈도우가 [a, b, c, ...]일 때, 인덱스를 x축, 데이터를 y축으로 두고 선형 회귀를 수행하면, 그 회귀선의 기울기를 구하는 것입니다. 이 기울기는 해당 구간의 데이터가 증가하는지, 감소하는지를 나타냅니다.

이렇게 rolling을 이용하면 데이터의 지역적 변화 추세를 파악할 수 있어, 시계열 분석, 주가 추세 분석 등에 매우 유용합니다.