![見出し画像](https://assets.st-note.com/production/uploads/images/155312280/rectangle_large_type_2_d82d2c01867d1a639ebd4f993a2136db.jpeg?width=1200)
#10.yfinance API で日本企業の株価を取得できる Pythonコード をつくる
1.概要
このサイトで紹介する Pythonコード は、入力ファイル( csv形式 )に記載された複数の銘柄コードを対象に、指定された期間の株価データを Yahoo! Finance から取得し、銘柄コードごとに csv形式のファイル として出力することができます。
ほかのwebサイトで紹介されている Pythonコード の多くは、単一の銘柄コードを想定した仕様になっており、汎用性が低いと感じたため、今回の紹介に至りました。
もしよければ、ご活用ください。
2.Pythonコードの全容
様々な書籍やwebサイトで言われているように、Pythonは他のプログラミング言語に比べて、簡潔にコードを組むことができます。
今回紹介するPythonコードは、20行程度( 空白やコメントを除けば10行程度 )です【図1】。
![](https://assets.st-note.com/img/1730595164-SD8yNY0FpWUOMXi2fvPbBn6k.png?width=1200)
コードは、次の5つのフェーズ( ➊〜➎ )で構成されています。
各フェーズの詳細は、次の「3.各フェーズの説明」に記載します。
➊ ライブラリ・モジュールのインポート
➋ 取得期間の設定
➌ 作業ディレクトリの移動
➍ 銘柄コードの読込
➎ 株価の取得・出力
3.各フェーズの説明
本項では、前項で紹介しました➊〜➎の各フェーズの詳細をご紹介します。
➊ ライブラリ・モジュールのインポート
このフェーズでは、コードを構築するうえで必要となるライブラリやモジュールをインポートします。
インポートするライブラリやモジュールは下記3点です。なお、「pandas」と「yfinance」は文字列が長いので、省略形として「pd」と「yf」を定義しています。
![](https://assets.st-note.com/img/1730595138-VG8SYJogw6dru9ID0kecxBCL.png?width=1200)
os : ファイルやディレクトリ操作に関する機能を提供するモジュール
pandas : データ分析に用いられる強力なライブラリ
yfinance : Yahoo FinanceのデータをPythonで取得するためのライブラリ
➋ 取得期間の設定
このフェーズでは、株価の取得期間を設定します。
本サイトのタイトルに記載のとおり、株価の取得には、yfinance API を用います。詳細は以降のフェーズで後述しますが、yfinance API の仕様上、取得期間は、sdate ≦ 取得期間 < edate となります。edate に設定した日付は含まれない点に注意してください。
![](https://assets.st-note.com/img/1727621659-s6bvnwhYZXOpijBdVJktDqC1.png?width=1200)
sdate : 株価の取得開始日
edate : 株価の取得終了日( ただし、yfinance API の仕様上、株価は edate で設定した日にちの前日分までが取得される点に留意が必要 )
➌ 作業ディレクトリの移動
このフェーズでは、指定された作業ディレクトリに移動します。作業ディレクトリ先は適宜設定してください。
作業ディレクトリには、出力されるCSVファイルが保存されます。また、次ののフェーズ「➍銘柄コードの読込」で取り扱う「In.csv」を当該ディレクトリに保存しておくこともお忘れなく。
「in.csv」とは、日本取引所グループのwebサイトからダウンロードできる「東証上場銘柄一覧」( xls形式 )をファイルの内容はそのままに、ファイル名をリネームして csv形式 で保存したものです。なお、本コードで扱う情報は、「In.csv」に収録されている「コード」のみです。当該サイトのリンクは下記のとおりですので、ご参照ください。
![](https://assets.st-note.com/img/1727621705-1JBO8Z7TwdmhDN9i6WLqpECx.png?width=1200)
● 日本取引所グループ「東証上場銘柄一覧」
その他統計資料 | 日本取引所グループ (jpx.co.jp)
➍ 銘柄コードの読込
このフェーズでは、「➌作業ディレクトリの移動」で準備した「In.csv」ファイルから「銘柄コード」を読み込み、pandas の DataFrame形式で「sym_lst」に格納します。
![](https://assets.st-note.com/img/1727621740-7ia2OcDhgS6yBLkowImMCsJz.png?width=1200)
➎ 株価の取得・出力
このフェーズでは、「➍銘柄コードの読込」で読み込んだ銘柄コードを順番に参照していき、順次、株価の時系列データをcsv 形式で出力していきます。
17行目:forループを使って、「sym_lst」の銘柄コードを順に「sym_i」に格納します。銘柄コードの数だけ繰り返し処理を行います。
19行目: yfinance の ticker オブジェクトを作成し、各銘柄の情報を取得するための準備をします。「.T」は、yfinanceでは東証上場企業のティッカーコードが「0000(4桁数字).T」で管理されているための処置です。
20行目:「➋取得期間の設定」で設定した取得期間をもとに株価データを取得して、「price」に格納します。「auto_adjust」とは、「調整後終値」と「終値」の比率をもとに、始値、高値、安値を調整する変数です。「true」= 調整あり、「False」= 調整なし、となります。必要に応じて、設定してください。
21行目:取得した株価データを pandas の DataFrame形式で「df」に格納します。
22行目:DataFrame形式で格納した「df」 の内容をCSVファイルとして出力します。ファイル名は、「 "Out_" + 銘柄コード + "_" + edate.csv 」の形式になります。
![](https://assets.st-note.com/img/1727621850-gr0PYiB3vAXNtpl7CTR8nebc.png?width=1200)
3.Pythonコードの提供
今本サイトで紹介しましたPythonコードとin.csvを提供しますので、ご自由にお使いください。