ども、木村です。本業はデータサイエンティスト、副業でアプリ開発をしています。
本記事では、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なら移動平均を高速に簡単に実装できます。
この機会にぜひ習得してみましょう!
Pythonの勉強法を徹底的にまとめました!
Pythonの勉強方法にお困りの方はぜひご参考ください!