본문 바로가기

빅데이터분석기사_실기/제1유형: 데이터 전처리

평활화 Smoothing

평활화

  • 데이터의 분포를 매끄럽게 함으로써 데이터에서 중요하지 않은 것(잡음 등)을 제거하고 패턴을 알아내는 방법
  • 목적: 값의 변화를 매끄럽게 하여 데이터의 추세(경향)을 알기 쉽게 하는 것

이동평균 (MA, Moving Average)

  • 이동평균은 이전 n개 데이터의 비가중/가중 평균
  • 단순이동평균, 누적이동평균, 가중이동평균 등이 있음

평활화 실습

  • 실습 데이터 준비: 1821년부터 1934년까지 캐나다 시라소니의 수에 대한 시계열 데이터 lynx.csv
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

file_path = 'https://raw.githubusercontent.com/YoungjinBD/dataset/main/lynx.csv'
df = pd.read_csv(file_path)

df


단순이동평균 (SMA, Simple Moving Average)

  • .rolling(n).mean()
  • n은 데이터 개수
  • 이전 n개 데이터의 평균
#10년 단순이동평균 SMA

df['sma'] = df["value"].rolling(10).mean()

plt.plot(df['value']) #파란색
plt.plot(df['sma']) #주황색
plt.show()

result

 


지수가중이동평균 (EWMA, Exponentially-weighted Moving Average)

  • .ewm(n).mean()
  • n은 데이터 개수
  • 이전 n개 데이터의 가중평균, 최근데이터에 가중치 부여
  • 가중치는 지수함수형태로 사용
# 지수가중이동평균

df['ewm'] = df['value'].ewm(10).mean()

plt.plot(df['value']) #파란색
plt.plot(df['ewm']) #주황색
plt.show()

결과