Pythonで株価データを取得するならyfinance|使い方・できること・できないことを解説

※本ページはプロモーションが含まれています。

株式投資×AI
スポンサーリンク

「Pythonで株価データを分析したい」
「AIを使って株価予測モデルを作ってみたい」
「チャートを自動生成したい」

こうしたニーズに応えてくれるのが、Pythonのライブラリの一つである yfinance です。

yfinanceを使えば、Yahoo! Financeが提供する株価データを、数行のコードで取得できます。
しかも無料で利用可能です。

取得できるのは株価だけではありません。

  • 企業情報
  • 財務データ
  • 配当金や株式分割情報

といった、分析に必要なデータも扱えます。

そのため、テクニカル分析からファンダメンタル分析、さらには機械学習モデルの構築まで、幅広い用途に活用されています。

本記事では、使い方に加え、yfinanceで「できること」と「できないこと」を整理しながら、実務目線での活用方法を解説していきます。

これから株価分析を始めたい方も、すでにPythonで分析を行っている方も、ぜひ参考にしてみてください。

yfinanceとは?できること・できないことを解説

yfinanceは、Yahoo! Financeが提供する金融データを簡単に取得できるライブラリです。

株価、指数、為替、企業情報、財務データなどをたった数行のコードで取得できるため、データ分析の入口として広く利用されています。

特に機械学習ディープラーニングを活用した株価予測を行う場合、最初に触れることになるライブラリの一つです。

無料で利用できる点も大きな魅力となっています。

yfinanceでできること【株価・財務データの取得】

yfinanceですが、株式に関するさまざまなデータを取得できます。

例えば以下のデータです。

  • 株価データ
  • 企業情報
  • 財務データ
  • 配当や株式分割情報

それぞれ説明していきます。

1. 株価データの取得

株価データに関しては、以下の5つのデータを取得できます。

  • 始値(Open)
  • 高値(High)
  • 安値(Low)
  • 終値(Close)
  • 出来高(Volume)

これらは株価分析の最も基本となるデータであり、テクニカル分析やチャート作成、機械学習モデルの学習データとしても活用できます。

たった数行のコードで過去の株価データをまとめて取得できるため、データ収集の手間を大幅に削減できます。

2. 企業情報の取得

yfinanceでは、株価データだけでなく企業の基本情報も取得できます。

例えば、以下のような情報が取得可能です。

  • 会社名
  • 本社所在地(住所)
  • 公式ホームページURL
  • 事業内容(Business Summary)
  • 業種(Sector / Industry)
  • 時価総額(Market Cap)

これらの情報を活用することで、

  • 業種ごとの銘柄分類
  • 時価総額によるフィルタリング
  • 財務分析前の企業概要チェック

といった前処理やスクリーニングの操作が自動化できます。

単なる株価データ取得ツールではなく、企業分析の入り口としても活用できる点がyfinanceの魅力の1つです。

3. 財務データの取得

yfinanceでは、企業の財務情報も取得できます。
株価だけでなく、企業の“中身”を分析できる点が大きな特徴です。

取得できる主な財務データは以下の通りです。

■ 損益計算書(P/L)

  • 売上高(Revenue)
  • 営業利益(Operating Income)
  • 当期純利益(Net Income)

■ 貸借対照表(B/S)

  • 総資産(Total Assets)
  • 負債(Total Liabilities)
  • 純資産(Total Equity)

■ キャッシュフロー計算書(C/F)

  • 営業キャッシュフロー
  • 投資キャッシュフロー
  • 財務キャッシュフロー
  • フリーキャッシュフロー

これらのデータを取得することで、

  • 売上成長率の分析
  • 利益率の推移確認
  • 財務健全性のチェック
  • フリーキャッシュフロー分析

といったファンダメンタル分析が可能になります。

株価だけを見るのではなく、企業の業績と照らし合わせて分析できる点がyfinanceの強みです。

4. 配当や株式分割の情報取得

yfinanceでは、株価データだけでなく配当や株式分割の情報も取得できます。

■ 配当情報(Dividends)

  • 配当実施日
  • 1株あたりの配当金

配当データを取得することで、

  • 配当利回りの計算
  • 配当推移の確認
  • 高配当銘柄のスクリーニング

といった分析が可能になります。

■ 株式分割情報(Stock Splits)

株式分割が行われた日時や分割比率も取得できます。

株式分割は株価データの連続性に影響するため、過去データを正しく分析するうえで重要な情報です。

特に長期間の株価推移を扱う場合は、分割調整後のデータを理解しておく必要があります。

配当や株式分割を考慮しないまま分析を行うと、

  • 実際の投資リターンとズレる
  • 株価が急落したように見える(分割の影響)

といった誤解が生じる可能性があります。

そのため、トータルリターン分析や長期バックテストを行う場合は必須のデータです。

yfinanceでできないこと【リアルタイム取得や売買は不可】

さまざまなデータを取得することができ非常に便利ですが、できないことももちろんあります。

例えば以下のことです。

  • リアルタイムの株価取得
  • 株式の購入や売却

それぞれ解説していきます。

1. リアルタイムの株価取得

yfinanceでは、完全なリアルタイム株価を取得することはできません
取得できる株価データは基本的に遅延データです。

そのため、

  • デイトレード
  • 秒単位の自動売買
  • 高頻度取引

といった用途には向いていません。

一方で、過去データの取得や長期的な分析には非常に強みがあります。

もしリアルタイムデータが必要な場合は、各証券会社が提供している取引ツールやAPIの利用を検討しましょう。

2. 株式の購入や売却

yfinanceは株価データを取得するためのライブラリであり、取引を行うためのプラットフォームではありません

そのため、

  • 株式の購入
  • 株式の売却
  • 注文の発行

といった操作は行えません。

あくまで「データ取得・分析用のツール」であることを理解しておく必要があります。

実際に売買を行う場合は、証券会社の取引ツールやAPIを利用してください。

yfinanceを使う前に知っておくべき注意点

yfinanceを実際に使う前に、以下の注意点があることを知っておきましょう。

  • 非公式である
  • 商用利用や再配布はできない
  • 学習や検証用途向きである
  • 将来的に利用できなくなる可能性がある

それぞれ解説していきます。

非公式である

yfinanceはYahoo! Financeの公式から出されているようなネーミングですが、実際は非公式です。

「Ran Aroussi(ラン・アルーシ)」という個人のエンジニアが作ったものになります。

Yahoo! Financeに名前が似ているのはYahoo! Financeの公開Webデータを利用しているためです。

利便性が高い一方、仕様変更や取得制限には注意が必要になります。

商用利用や再配布はできない

Yahoo! Financeの非公式のものですが、データのもととなっているのはYahoo! Financeのデータのため、Yahoo! Finance(LINEヤフー株式会社)の利用規約が適用されます。

以下のように、Yahoo! Finance自体は商用利用や再配布等を禁じています。

そのため、yfinanceから得たデータを基に商品やサービスを作り、それを販売するようなことはしてはいけません。

また、取得したデータを他の人や企業に提供することもしてはいけません。

あくまでも家庭内や個人用としての利用に限ります

学習や検証用途向きである

yfinanceのデータは完全なものではなく、データの欠損や修正がある場合もあります。

データの完全性は保証されていないわけです。
そのため、実運用には向いていません。

一方で個人としての学習やAIモデルの検証等に向いています

将来的に利用できなくなる可能性がある

先ほど非公式であると述べました。

非公式であるがゆえに、今後規制が厳しくなったり、仕様が変更したり、有料になったり、アクセスが制限されたりする可能性があります。

yfinanceだけに依存するのは避けたほうが無難です。

yfinanceのインストール方法と環境準備

早速、yfinanceを実際にインストールしていきましょう。

yfinanceを利用するにはあらかじめPythonをインストールする必要がありますが、この場では省略します。

コマンドプロンプト/ターミナル」の場合と「Jupyter Notebook/Google Colab」の場合で若干異なるため、それぞれ説明していきますね。

コマンドプロンプト/ターミナルの場合

コマンドプロンプト/ターミナルの場合は、以下のコードでインストールが可能です。

pip install yfinance

インストールできたか確認するには以下のコードを入力しましょう。

import yfinance

以下のようなエラーが出なければ、問題なくインストールが完了しています。

Jupyter Notebook/Google Colabの場合

Jupyter Notebook/Google Colabの場合は、先頭に!を付ける必要があります。

!pip install yfinance

インストールできたか確認するには、同じく以下のコードを入力し、エラー等何もでなければOKです。

import yfinance

yfinanceの使い方【実践コード付き】

インストールが完了したら、実際にyfinanceを使っていきましょう。

使用する場合は、以下のコードにてインストールしたyfinanceをインポートします。

import yfinance as yf

impot yfinanceだけでも問題ありません。

また、as以降は何でも構いません(yfinanceと毎回入力するのが手間なので別名で定義しているだけです)

では、yfinanceで取得できるものについてそれぞれコードを載せながら解説していきます。

①株価データの取得

まずは前提となる株価データを取得していきます。
取得するには以下のコードを入力します。

# トヨタ自動車の株価データを取得

import yfinance as yf

df = yf.download("7203.T")

print(df)

実行結果は以下の通りです。

Close終値
High高値
Low安値
Open始値
Volume出来高

df = yf.download("7203.T")の()の中身が、実際に取得したい銘柄の証券コード等になります。

国内株式や米国株式で異なるため注意しておきましょう。

国内株式:証券コード+.T(例:7203.T)
米国株式:ティッカーシンボル(例:AAPL)

先ほどのトヨタ自動車の株価データを取得した際には1999年からのデータであったと思います。

「特定の期間だけで十分」と思った人もいるのではないでしょうか。

yfinanceではきちんと特定の期間に絞り込むことも可能です。
実際には以下のように記述します。

import yfinance as yf

df = yf.download("7203.T", start="2025-01-01", end="2025-04-30")

print(df)

startendの部分に取得したい期間の始めと終わりを指定すると、その期間のみ取得できます。

また、複数銘柄の株価データを一度に取得することも可能です。

import yfinance as yf

df = yf.download(["7203.T", "8306.T", "9433.T"], start="2025-01-01", end="2025-04-30")

print(df)

多少見にくくなりますが、以下のように複数銘柄分まとめて取得することができます。

②企業情報の取得

企業情報を取得するには以下のコードを入力します。

import yfinance as yf

df = yf.Ticker("7203.T")

df.info

実行結果は以下の通りです。

上図のように、本社の所在地から事業内容、売上高までさまざまな情報を取得できます。

ただ、たくさんの情報を取得できるがゆえに、中には不要な情報もあるかと思います。

そういった場合は、以下のように特定の情報を絞って取得すると良いです。

import yfinance as yf

df = yf.Ticker("7203.T")

df.info["website"] #企業サイトのURLのみ取得

上記は企業サイトのURLのみ取得するようにしたコードですが、実行結果は以下の通りです。

このように、特定の情報のみに絞って取得することも容易にできます。

③財務データの取得

財務データ(損益計算書、貸借対照表、キャッシュフロー計算書)を取得していきます。

取得方法はそれぞれ異なるので、順に解説していきますね。

③-①損益計算書(P/L)

損益計算書については以下のコードを入力します。

import yfinance as yf

df = yf.Ticker("7203.T")

df.income_stmt #年単位で表示
df.quarterly_income_stmt #3ヶ月単位で表示

実行結果は以下の通りです。

それぞれの値の意味としては以下をご覧ください。

Tax Effect Of Unusual Items特別損益に係る税効果額
Tax Rate For Calcs算定に用いた実行税率
Normalized EBITDA特別要因控除後EBITDA
Total Unusual Items特別損益合計
Total Unusual Items Excluding Goodwillのれん償却・減損を除く特別損益合計
Next Income From Continuing Operation Net Minority Interest非支配株主持分控除後継続事業利益
Reconciled Depreciation調整後減価償却費
Reconciled Cost Of Revenue調整後売上原価
EBITDAEBITDA
EBITEBIT(営業利益)
Net Interest Income支払利息純額
Interest Expense支払利息
Interest Income受取利息
Normalized Income特別要因控除後当期純利益
Net Income From Continuing And Discontinued Operation継続事業及び非継続事業を含む当期純利益
Total Expenses費用合計
Total Operating Income As Reported営業利益(報告ベース)
Diluted Average Shares期中平均株式数(希薄化後)
Basic Average Shares期中平均株式数(基本)
Diluted EPS1株当たり当期純利益(希薄化後)

③-②貸借対照表(B/S)

貸借対照表については以下のコードを入力します。

import yfinance as yf

df = yf.Ticker("7203.T")

df.balance_sheet #年単位で表示
df.quarterly_balance_sheet #3ヶ月単位で表示

実行結果は以下の通りです。

それぞれの意味合いとしては以下の通りです。

Treasury Shares Number自己株式数
Ordinary Shares Number普通株式数
Share Issued発行済株式数
Net Debtネット有利子負債
Total Debt有利子負債合計
Cash Cash Equivalents And Short Term Investments現金及び現金同等物並びに短期投資
Other Short Term Investmentsその他短期投資
Cash And Cash Equivalents現金及び現金同等物
Cash Equivalents現金同等物
Cash Financial金融機関預金

③-③キャッシュフロー計算書(C/F)

キャッシュフロー計算書については以下のようにコードを入力します。

import yfinance as yf

df = yf.Ticker("7203.T")

df.cashflow #年単位で表示
df.quarterly_cashflow #3ヶ月単位で表示

実行結果は以下の通りです。

それぞれの意味合いは以下をご覧ください。

Free Cash Flowフリー・キャッシュ・フロー
Repayment Of Debt借入金及び社債の返済による支出
Issuance Of Debt借入金及び社債の発行による収入
Capital Expenditure設備投資額
End Cash Position期末現金及び現金同等物残高
Beginning Cash Position期首現金及び現金同等物残高
Effect Of Exchange Rate Changes為替換算差額
Changes In Cash現金及び現金同等物の増減額
Financing Cash Flow財務活動によるキャッシュ・フロー
Cash Flow From Continuing Financing Activities継続事業に係る財務活動によるキャッシュ・フロー
Net Other Financing Chargesその他財務活動による収支(純額)
Cash Dividends Paid配当金の支払額
Common Stock Dividend Paid普通株式に係る配当金の支払額
Net Common Stock Issuance普通株式の発行(自己株式取得)による純増減額
Net Issuance Payments Of Debt借入金及び社債の純増減額
Net Short Term Debt Issuance短期借入金の純増減額
Net Long Term Debt Issuance長期借入金の純増減額

④配当・株式分割情報の取得

配当や株式分割の情報を取得するには以下のように記述します。

import yfinance as yf

df = yf.Ticker("7203.T")

df.actions #配当と株式分割を両方取得する場合
df.dividends #配当のみ取得する場合
df.splits #株式分割のみ取得する場合

両方を取得した場合が以下の通りです。

それぞれの意味合いは以下の通りです。

Date実施日
Dividends配当
Stock Splits株式分割

⑤ローソク足チャートの描画

ローソク足チャートを描画するためには、mplfinanceという金融チャート特化のライブラリを別途インストールする必要があります。

インストール方法としては以下の通りです。

# コマンドプロンプト/ターミナルの場合
pip install mplfinance

# Jupyter Notebook/Google Colabの場合
!pip install mplfinance

以下のコードを入力し、何もエラー等でなければ問題なくインストールが完了しています。

import mplfinance

インストールが完了したら、実際にローソク足チャートを描画していきます。

注意点として、mplfinanceyfinance標準の多段カラムに対応していないため、multi_level_index=Falseで単一のカラムに指定する必要があります。

import yfinance as yf
import mplfinance as mpf

df = yf.download("7203.T", start="2025-01-01", end="2025-04-30", multi_level_index=False)

mpf.plot(
    df,
    type='candle', #ローソク足を指定
    volume=True, #下部に出来高を表示させる
    style='yahoo', #Yahoo! Finance風の配色にする
    title='7203.T Toyota Motor', #グラフのタイトルを指定
    ylabel='Price (JPY)', #y軸名を指定
    ylabel_lower='Volume' #y軸下段名を指定
)

上記コードを実行した結果が以下の通りです。

ローソク足チャートを描画することができました。

自分好みに色等を細かく指定したい場合は以下を参考にしてみてください。

import yfinance as yf
import mplfinance as mpf

df = yf.download("7203.T", start="2025-01-01", end="2025-04-30", multi_level_index=False)

mc = mpf.make_marketcolors(up='red',
                           down='blue',
                           edge='inherit', #ローソク足枠線の色 inherit:upとdownの色を引き継ぐ
                           wick='inherit', #ヒゲの色
                           volume='inherit' #出来高バーの色
                          )

style = mpf.make_mpf_style(marketcolors=mc,
                           gridstyle=':', #補助線の線種を指定 :は点線
                           facecolor='black', #プロット領域の背景色
                           y_on_right=True #y軸を右側に表示
                          )
            
mpf.plot(df,
         type='candle', #ローソク足を指定
         style=style, #チャートのスタイルを指定
         volume=True, #下部に出来高を表示
         title='7203.T Toyota Motor', #グラフのタイトルを指定
         ylabel='Price (JPY)', #y軸名を指定
         ylabel_lower='Volume' #y軸下段名を指定
        )

上記コードの結果が以下の通りです。

このように、自分好みにいろいろ設定することができるため、いろいろ触れてみてください。

⑥CSVファイルとして保存

yfinanceは株価データが表示されるだけで、それ単体ではファイルとして保存することはできません
それではデータ分析等の二次利用に不便です。

そこで、以下のコードを追加することでCSVファイルとして保存することができるようになります。

import yfinance as yf

df = yf.download("7203.T")

df.to_csv("C:\\test\\test.csv") #吐き出し先のパスは任意

上記コードを使用しデータ分析等に活用しましょう。

よくあるエラーと対処法【Too Many Requests など】

yfinanceを使用するにあたり、エラーやトラブルがたまに発生します。

発生した際に活用できる対処法について解説していきます。

Too Many Requests

yfinanceを使用するにあたり、以下のようなエラーが出ることがあります。

YFRateLimitError('Too Many Requests. Rate limited. Try after a while.')

これは一度に大量のデータを取得しようとした際に表示されます。

以下のコマンドにて要求の時間間隔を伸ばすことでエラーを回避できるため、試してみてください。

import time

time.sleep(1) #1秒の時間間隔を設ける

今まで取得できていたのに急に失敗する

yfinance側のエラーにより、データが取得できなくなることがあります。
私も一度くらいました。

取得に失敗する場合は、yfinanceをアップデートすることで直ることが多いです。

pip install --upgrade yfinance

ぜひ試してみてください。

まとめ|yfinanceは株価分析の強力な第一歩

本記事では、株価のデータ分析に非常に便利なyfinanceの使い方からできること・できないことについて解説していきました!

株価データ~企業情報、財務データを取得できるものの、リアルタイムの株価を取得できなかったり、データの欠損や修正があったりすることが欠点として挙げられました。

一方で過去のデータに対しては強いため、AI等でデータ分析をする際は非常に役立ちます。

私自身もyfinanceを活用し、株価を予測したり株価が上昇する銘柄を予測したりしています。
興味がある方は併せてご覧ください。

本記事を書いた人

30歳までに総資産1億円を目指す25歳男性サラリーマン
大学3年生の頃から投資に興味を持ち始め、2023年10月から本格的に投資を始める
毎月8万円を投資に充て、2024年度末で運用資産が135万円超え
総資産1億円までの軌跡を本ブログに掲載
今まで得たナレッジやノウハウを余すことなく提供いたします

とうシカをフォローする
サラリーマン投資家ランキング
株式投資×AI
スポンサーリンク
シェアする
とうシカをフォローする

コメント

タイトルとURLをコピーしました