2024年から新NISAが始まりますがみなさん準備はできていますでしょうか?私ですか?何もしてないですよ。でもとりあえず何かやらなきゃということで、気になる企業の株価推移だけでも取得・チェックできるようになっておきましょう。
今回株価取得・チャート化にあたって、以下のステップで実施していきたいと思います。
株価を取得するための方法についていろいろ調べてみましたが、「yahoo_finance_api2」と「pandas-datareader」とAPIが利用できそうです。今回は前者を使わせていただきましょう。なお、pandas-datareaderについてはpandasという名前がついているように、元はpandasの一部だったようです。公式ドキュメントはそれぞれ以下の通りです。 ・yahoo_finance_api2:URL ・pandas-datareader:URLです。
yahoo_finance_api2を利用するためのライブラリと、表への変換のために利用するpandasをインストールします。
pip install yahoo_finance_api2
pip install pandas
データ取得、表形式の変換は以下の通りです。公式のコードを参考にしております。
yahoo-finance-api2のshareモジュールをインポートします。shareモジュールは
(l.17) で使用されますが株価データを取得するためのメソッドが含まれます。また、yahoo-finance-api2のYahooFinanceErrorモジュールはエラー表示を可能にします。shareのShareクラスでインスタンス化します。.get_historical()メソッドを利用して実際に株価データを取得していきます。.get_historical()メソッドの引数としてshare.PERIOD_TYPE_YEARを記述し年次データを取得します。今回は"5"とあるように5年分のデータを取得します。.get_historical()メソッドの引数としてshare.FREQUENCY_TYPE_MONTHを記述しデータの取得間隔を指定します。今回は"1"とあるように1ヶ月間隔でデータを取得します。len()メソッドでデータの数量を確認します。stock_dataの最終列に追加するという記述です。stock_dataを (l.13) のstock_data_listリストに一旦格納します。これを残り2社分for文を回して実施します。YahooFinanceErrorを利用します。sys.exit(1)メソッドで処理を終了します。stock_data_listリストに格納されているので、これを一つずつDataFrame化していきます。unit="ms"とすることでミリ秒まで正確に取得可能です。stock_dataに追加します。上記の通り3社(JR東日本・JR西日本・JR東海)の5年分の株価データを取得できたところで、続いてチャート化していきましょう。
株価データのチャート化には「matplotlib」というライブラリを利用します。公式のHPはこちらです。
下の通りmatplotlibをインストールします。
pip install matplotlib
それでは表形式にした株価データをチャート化していきます。
matplotlibのpyplotモジュールをインポートします。pyplotモジュールによってチャートの描画が可能になります。stock_dataの月の列と終値の列を抜き出して変数に入れていきましょう。pyplotモジュールのplotメソッドでパラメータを設定していきます。(l5.8) のデータとともにmarker(プロットする点の形式)、linestyle(線の種類)、color(色)、label(凡例(legend)に表示されるラベル)を設定します。今回はお試しなので色々変えてみました。labelをチャート内に表示します。すると下図のようにチャートを描画することができました。下図内下方の赤枠にセーブボタンと思しきボタンがありますが、これを押下すると画像を保存できるようになります。
以上で、株価データの取得とチャート化がPythonでできました。matplotlib公式にチートシートも用意されているので、これを参考にパラメータを設定してチャートをいじってみると面白いと思います。なお、これができたからと言って株に詳しくなるわけではないので悪しからず。
よろしければこちらの記事も参考にしてみてください。
Loading...