Python에서 이동 평균을 계산하는 방법


이동 평균은 시계열 데이터를 평활화하여 데이터의 “노이즈”를 줄이고 패턴과 추세를 보다 쉽게 식별하는 데 사용할 수 있는 기술입니다.

이동 평균의 기본 아이디어는 특정 기간에 대한 “이동 평균”에 도달하기 위해 이전 기간의 평균을 취하는 것입니다.

이 튜토리얼에서는 Python에서 이동 평균을 계산하는 방법을 설명합니다.

예: Python의 이동 평균

특정 회사의 10개 기간에 걸친 총 매출을 보여주는 다음 테이블이 있다고 가정합니다.

 x = [50, 55, 36, 49, 84, 75, 101, 86, 80, 104]

방법 1: cumsum() 함수를 사용합니다.

이동 평균을 계산하는 한 가지 방법은 cumsum() 함수를 사용하는 것입니다.

 import numpy as np

#define moving average function
def moving_avg(x, n):
    cumsum = np.cumsum(np.insert(x, 0, 0)) 
    return (cumsum[n:] - cumsum[:-n]) / float(n)

#calculate moving average using previous 3 time periods
n = 3
moving_avg(x, n):

array([47, 46.67, 56.33, 69.33, 86.67, 87.33, 89, 90])

결과를 해석하는 방법은 다음과 같습니다.

  • 세 번째 기간의 이동 평균은 47입니다. 이는 처음 세 기간의 평균((50+55+36)/3 = 47) 으로 계산됩니다.
  • 네 번째 기간의 이동 평균은 46.67입니다. 이는 이전 세 기간의 평균((55+36+49)/3 = 46.67) 으로 계산됩니다.

등등.

방법 2: 팬더를 사용하세요.

이동 평균을 계산하는 또 다른 방법은 팬더 기반 함수를 작성하는 것입니다.

 import pandas as pd

#define array to use and number of previous periods to use in calculation
x = [50, 55, 36, 49, 84, 75, 101, 86, 80, 104]
n=3

#calculate moving average
pd.Series(x).rolling(window=n).mean().iloc[n-1:].values

array([47, 46.67, 56.33, 69.33, 86.67, 87.33, 89, 90])

이 방법은 이전 방법과 정확히 동일한 결과를 생성하지만 더 큰 어레이에서 더 빠르게 실행되는 경향이 있습니다.

이동 평균 계산에 사용할 이전 기간을 원하는 만큼 지정할 수도 있습니다. 예를 들어, n=5를 사용하는 것이 더 좋을 수 있습니다.

 #use 5 previous periods to calculate moving average
n=5

#calculate moving average
pd.Series(x).rolling(window=n).mean().iloc[n-1:].values

array([54.8, 59.8, 69., 79., 85.2, 89.2])

이동 평균을 계산하는 데 사용하는 기간이 많을수록 이동 평균 선이 더 “평활”해집니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다