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])
이동 평균을 계산하는 데 사용하는 기간이 많을수록 이동 평균 선이 더 “평활”해집니다.