▶ Pythonで株の分析をするための環境構築がまだの方は以下の記事をどうぞ
▶ PythonでWebページサービスから株価データを取得する方法は以下をどうぞ
はじめに
今回は株価の時系列変化を可視化する方法について、初心者の方でも理解しやすいように丁寧に解説していきます。株価の変動をグラフで表現することで、傾向を把握しやすくなります。まずは株価の分析でよく使われる「ローソク足チャート」ではなく、折れ線グラフで傾向を把握することにしましょう。
環境
- Windows11
- Python 3.9.7
- pandas 1.5.0
- numpy: 1.23.3
- matplotlib: 3.6.1
株価の時系列変化を見る
データの抽出
前回、stooqというWebサービスから指定した銘柄の株価を取得する方法をご紹介しました。前回は「トリドールホールディングス(銘柄コード:3397)」「塩野義製薬(銘柄コード:4507)」の5年分の株価データを取得しました。
▶ Webサービスから株価データを取得する方法は以下の記事をご覧ください。
前回取得した、「トリドールホールディングス(銘柄コード:3397)」「塩野義製薬(銘柄コード4507)」の5年分の株価データがdfに入っている状態です。
# データフレームの中身の確認
df
このデータフレームは階層構造になっているのがわかりますか?インデックスとカラムを確認してみましょう。
# インデックスの確認
df.index
DatetimeIndexが設定されています。インデックスには「Date」という名前が設定されていることがわかります。次にカラムを確認してみましょう。
# カラムの確認
df.columns
MultiIndexと表示されてますね。階層構造になっていることがわかります。namesに「Attributes」と「Symbols」があることがわかります。つまり、↓こういうことですね。
これがわかれば、データの抽出は簡単ですね。「トリドールホールディングス(銘柄コード:3397)」の終値(Close)を取得してみましょう。
# データの抽出
df.loc[:,('Close','3397.JP')]
locメソッドを使ってデータの抽出をおこなっています。行方向はすべて抽出、列方向に条件を設定しています。列方向(カラム)は階層構造になっているので外側から条件を指定します。ここでは外側で「終値(Close)」、内側で「トリドールホールディングス(3397.JP)」を指定しています。
▶ loc, ilocによるデータの抽出方法については以下をご覧ください。
▶ 階層型インデックスについては以下の記事をご覧ください。
折れ線グラフを描く
データを抽出することができたので、いよいよ可視化しましょう。時系列変化を見るためにひとまず折れ線グラフを描くことにしましょう。Pythonではmatplotlibという可視化ライブラリを使うとわかりやすいです。
▶ 折れ線グラフの描き方は以下をご覧ください。
先ほど抜き出した「トリドールホールディングス(銘柄コード:3397)」の折れ線グラフを描きましょう。
# ライブラリのインポート
import matplotlib.pyplot as plt
# 折れ線グラフの描画
plt.plot(df.loc[:,('Close','3397.JP')])
plt.title('トリドールホールディングスの株価の直近5年間の変化')
plt.ylabel('単位:円')
簡単ですね。plt.plot(x,y)で折れ線グラフを描くことができます。xにindexを使うときにはSeriesを指定すればOKです。
他の銘柄の株価の変化と比較したい場合は、グラフを重ねて書くとよいでしょう。「塩野義製薬(銘柄コード:4507)」のグラフも描いてみましょう。
# 折れ線グラフの描画
# 折れ線グラフの描画
plt.plot(df.loc[:,('Close','3397.JP')],label='トリドール')
plt.plot(df.loc[:,('Close','4507.JP')],label='塩野義製薬')
plt.title('直近5年間の株価の変化')
plt.ylabel('単位:円')
plt.legend()
まとめ
今回は取得した株価の時系列変化を見る方法として、折れ線グラフでの描画を紹介しました。比較したい銘柄があった場合には一つのグラフに重ねて描くと比較しやすいですね。今回は単なる折れ線グラフにしましたが、株価のデータは通常、「ローソク足チャート」で描くことが多いです。次回はこの「ローソク足チャート」にチャレンジしましょう。
コメント