前回(【Python】APIで日本の個別株情報を取得する)、株価データを取得しましたが、それだけでは単なるコレクションなので分析するために、移動平均を追加していきたいと思います。
データは前回同様9432:日本電信電話になります。
APIで取得した終値のデータに5日、25日、75日の移動平均線を追加してみます。
今回はJupyter Labでグラフとして表示させます。
■プログラム
import pandas as pd import matplotlib.pyplot as plt %matplotlib inline df=pd.read_csv('9432.csv',encoding='shift-jis', index_col=0) df.index=pd.to_datetime(df.index) df['5MA']=df['Close'].rolling(5).mean() df['25MA']=df['Close'].rolling(25).mean() df['75MA']=df['Close'].rolling(75).mean()
■解説
1.必要なライブラリのインポート
まずpandasとグラフを描画するmatplotlibをインポートします。
import pandas as pd import matplotlib.pyplot as plt %matplotlib inline
2.CSVを読み込む
1列目をindexとして読み込みます。
df=pd.read_csv('9432.csv',encoding='shift-jis', index_col=0)
読み込んだ状態ではindexが文字列Object型になるので、日付型に変更します。
df.index=pd.to_datetime(df.index)
データの型を確認すると以下のようになります。
df.info()
DatetimeIndex: 1272 entries, 2018-01-03 to 2023-03-03 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Open 1272 non-null float64 1 High 1272 non-null float64 2 Low 1272 non-null float64 3 Close 1272 non-null float64 4 Volume 1272 non-null int64 dtypes: float64(4), int64(1) memory usage: 59.6 KB
3.移動平均を付ける
DataFrame[カラム名].rolling(期間).mean() でそのサイクルに対する平均値を出すことができます。
今回は移動平均なので.mean()ですが、.sum()だとその期間の合計値とかも行けます。
df['5MA']=df['Close'].rolling(5).mean()
データフレームの中を確認するとそれぞれの移動平均値が格納されています。
df
4.グラフに描画する
実際にグラフに描画してみます。
df[['Close','5MA','25MA','75MA']].plot(color=['skyblue','pink','blue','red'])
■少し見てみる
よく短期移動平均が長期移動平均を上回るとゴールデンクロスとして株価が上昇する兆し、短期移動平均が長期移動平均を下回るとデッドクロスとして株価が下がる兆しと言われますが、グラフで表現するとホントその通りなんですね。
これはゴールデンクロスのポイントを毎日見つければ、上がる株価がわかるんですかね。
↓よろしければクリックをお願いします!
0 件のコメント:
コメントを投稿