Python入門

【5分でわかる】移動平均を算出する方法 | Python入門


ども、木村です。本業はデータサイエンティスト、副業でアプリ開発をしています。

本記事では、Pythonで移動平均を算出する方法を解説します。

想定読者

Pythonで移動平均を算出したい方

移動平均とは?

移動平均とは、ある一定期間の値の平均値を算出した値のことを言います。

例えば以下のように2日の3日間移動平均値を算出した場合は、以下のように2日前後の三日間の値を全て足して日数で割り、移動平均値を出すことができます。

これを全ての日にちに対し行えば特定期間の移動平均を取得できます。

またよく株価のグラフなどで登場する移動平均線とは、これらの値を時系列で繋いだものを言います。

今回の例では、3日間の移動平均値を算出しましたが、「3日間」の部分は任意の期間に設定して問題ありません。

移動平均値を算出する目的は、時系列データの変化を滑らかにして傾向把握をしやすくするために行われます。

つまり算出期間を長くするほど変化が滑らかになり傾向がわかりにくくなります。

ポイント

移動平均とは、ある一定期間の値の平均値を算出したもの

時系列情報の変化や傾向を把握するために利用する

Pythonで移動平均を算出する方法

Pythonで移動平均を算出する際には、以下二つのどちらかのライブラリを使う方が良いでしょう

  • pandas
  • numpy

pandasを使って移動平均を算出する

pandasのrollingメソッドを使うことで移動平均を算出できます。

前述している以下の数値を使って移動平均を算出してみましょう。

具体的には以下のように記述します。

import pandas as pd

# 10日分のデータを投入
data = pd.Series([23,34,12,32,12,23,12,12,3,34])
# rollingに平均値を出す期間を設定
print(data.rolling(3).mean())

今回は3日間分の平均値を利用したいため、rollingメソッドに3を設定しています。

出力結果

 0          NaN
 1          NaN
 2    23.000000
 3    26.000000
 4    18.666667
 5    22.333333
 6    15.666667
 7    15.666667
 8     9.000000
 9    16.333333
 dtype: float64

numpyを使って移動平均を算出する

次にnumpyというライブラリを利用して移動平均値を算出する方法を紹介します。

numpyのconvoluveメソッドを使用することで実現できます。

具体的には以下のように実装します。

import numpy as np

data = np.array([23,34,12,32,12,23,12,12,3,34])

print(np.convolve(data,np.ones(3), mode='valid') / 3)

data,np.ones(3)では、指定した個数のデータを配列から順番に取得します。

取得されたデータを取得する個数(今回は3)で割ることで移動平均値を取得しています。

出力結果

[23.         26.         18.66666667 22.33333333 15.66666667 15.66666667
 16.33333333] 

まとめ

いかがでしたか?

Pythonなら移動平均を高速に簡単に実装できます。

この機会にぜひ習得してみましょう!