파이썬 판다스 주가 이동평균선 쉽게 계산하는 방법은?

목차

    2020. 4. 29. 09:30

    이동평균선을 구하는 방법은 어려지 않으나, 막상 하려고 하면 굉장히 귀찮다. 특히 그룹별로 한다고 생각하면 함수를 만들어서 적용하면 좋을 것 같지만, 선뜻 하고 싶지 않다. 이런 기능을 제공해주면 얼마나 좋을까 하고 생각하는 순간. 판다스 데이터 프레임에서 이동평균선을 쉽게 구할 수 있다는 사실을 알게 되었다. 오늘은 파이썬 판다스 이동평균선을 쉽게 계산하는 방법에 대해서 알아보도록 하겠다.


    이동평균



    1. rolling이라는 함수를 이용하면 이동평균선을 쉽게 구할 수 있다.

    rolling은 이동평균선처럼 정해진 구간을 이동하면서 요약값을 구할 때 유용한 함수이다. 테스트를 위해서 삼성전자 주가 데이터를 가져와봤다. financialReader패키지를 이용하면, 주식과 관련된 많은 정보를 손쉽게 얻을 수 있다. financialReader패키지에 대한 자세한 내용은 아래 포스팅을 참조하기 바란다.

    ( 참조: financeDataReader 알아보기 )

    혹은 실시간 주가를 수집하고 싶다면, 한국거래소 API를 이용하면 된다. 한국거래소 API에 대한 내용은 아래 포스팅을 참조해보자.
    ( 참조: 파이썬 실시간 주가, 주식시세 데이터 수집하는 방법은? )

    import FinanceDataReader as fdr


    df=fdr.DataReader('005930','2019')


    30일 이동평균선을 구하기 위해서는, rolling함수에 입력 파라미터로 30을 넣고 요약함수를 뒤에 붙여주면 된다. 60일,90,120일 이동평균선도 구해서 seaborn 패키지를 이용해서 그래프도 그려보았다. 

    df["mov_30"]=df["Close"].rolling(30).mean()

    df["mov_60"]=df["Close"].rolling(60).mean()

    df["mov_90"]=df["Close"].rolling(90).mean()

    df["mov_120"]=df["Close"].rolling(120).mean()


    import seaborn as sns

    sns.lineplot(x=df.index,y=df["mov_30"])

    sns.lineplot(x=df.index,y=df["mov_60"])

    sns.lineplot(x=df.index,y=df["mov_90"])

    sns.lineplot(x=df.index,y=df["mov_120"])


    이동평균선

    ( 삼성전자 이동평균선 )



    2. window, min_periods, center, win_type, on, axis, closed의 입력파라미터를 제공하고 있다.

     

    왜 이렇게 입력파라미터가 많은가 하는 생각이 든다. 하지만, 이동평균선을 구하면서 이렇게 했으면 좋겠는데, 하는 것은 옵션으로 다 제공하고 있다.


    min_periods에 값이 있으면, 최소로 지정한 수 이상의 데이터 갯수가 있으면 요약값을 구한다. 이동평균선을 구하면 앞에는 데이터가 없어서 NA로 기록되는데, 이게 보기 싫을 때 유용하게 사용할 수 있다.


    기본으로 인덱스를 기준으로 이동평균선을 구한다. 다른 칼럼을 기준으로 하고 싶다면, on="칼럼명" 이렇게 입력하면 된다.


     win_type을 설정하지 않으면 모든 데이터에 동등한 가중치를 준다. 하지만, 다른 타입을 적용하면 가중치가 적용된 이동평균선을 구할 수도 있다. boxcar, triang, blackman 등 다양한 옵션들이 있다.


    자세한 내용은 판다스 홈페이지에 잘 설명되어 있으니, 아래 페이지를 참고하기 바란다.

    ( 참조: 판다스 rolling함수 docs 바로가기 )



    오늘은 이렇게 파이썬 판다스 주가 이동평균선 쉽게 그리는 방법에 대해서 알아보았다. rolling이라는 함수가 있어 어렵지 않게 그릴 수 있었다.


    파이썬을 직접 활용하는 것만큼 효과적인 공부는 없다. 그래서 파이썬을 활용해서 할 수 있는 일드을 정리해보았다. 자세한 내용은 아래 포스팅을 참조해보자.
    ( 참조: 파이썬 활용, 파이썬 프로젝트로 할 수 있는 일들을 알아보자! )