Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 Pandas로 데이터프레임의 롤링 윈도우 평균 계산하기

Pandas에서 롤링(Rolling) 윈도우는 시계열 데이터나 연속된 관측값을 분석할 때 널리 활용되는 기법입니다. 고정된 크기의 창을 한 칸씩 이동시키면서 각 구간의 통계값을 계산하기 때문에 '이동 평균(moving average)'이라고도 부릅니다.

예를 들어 다음과 같은 데이터프레임에 롤링 윈도우 평균을 적용하면 아래와 같은 결과를 얻을 수 있습니다.

Average of rolling window is:
    Id   Age   Mark
0   NaN  NaN   NaN
1   1.5  12.0  85.0
2   2.5  13.0  80.0
3   3.5  13.5  82.5
4   4.5  31.5  90.0
5   5.5  60.0  87.5

해결 접근 방법

  • 데이터프레임을 정의합니다.

  • df.rolling(window=2).mean()을 호출하여 롤링 윈도우 크기 2의 평균을 계산합니다.

df.rolling(window=2).mean()

예제 코드

아래 코드를 통해 실제 동작 과정을 확인해 보겠습니다.

import pandas as pd

df = pd.DataFrame({"Id":[1, 2, 3, 4, 5, 6],
                   "Age":[12, 12, 14, 13, 50, 70],
                   "Mark":[80, 90, 70, 95, 85, 90]})

print("Dataframe is:\n", df)
print("Average of rolling window is:\n", df.rolling(window=2).mean())

실행 결과

Dataframe is:
  Id  Age  Mark
0  1   12    80
1  2   12    90
2  3   14    70
3  4   13    95
4  5   50    85
5  6   70    90

Average of rolling window is:
    Id   Age   Mark
0   NaN  NaN   NaN
1   1.5  12.0  85.0
2   2.5  13.0  80.0
3   3.5  13.5  82.5
4   4.5  31.5  90.0
5   5.5  60.0  87.5

결과 해석

첫 번째 행(인덱스 0)이 모두 NaN으로 표시되는 이유는 해당 위치까지 윈도우 크기(2개)만큼의 데이터가 쌓이지 않아 평균을 계산할 수 없기 때문입니다.

인덱스 1부터는 바로 앞의 두 행 값을 평균합니다. 예를 들어 Id 열의 1.5는 (1 + 2) ÷ 2에서 나온 값이며, Age 열의 마지막 값 60.0은 (50 + 70) ÷ 2의 결과입니다.

윈도우 크기를 바꾸고 싶다면 window 매개변수에 원하는 숫자를 지정하면 됩니다. 예를 들어 df.rolling(window=3).mean()으로 작성하면 세 행 단위의 이동 평균을 구할 수 있습니다.