「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 yfinanceyfinanceの使い方【実践コード付き】

インストールが完了したら、実際にyfinanceを使っていきましょう。
使用する場合は、以下のコードにてインストールしたyfinanceをインポートします。
import yfinance as yfimpot 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)startとendの部分に取得したい期間の始めと終わりを指定すると、その期間のみ取得できます。
また、複数銘柄の株価データを一度に取得することも可能です。
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 | 調整後売上原価 |
| EBITDA | EBITDA |
| EBIT | EBIT(営業利益) |
| 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 EPS | 1株当たり当期純利益(希薄化後) |
③-②貸借対照表(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インストールが完了したら、実際にローソク足チャートを描画していきます。
注意点として、mplfinanceはyfinance標準の多段カラムに対応していないため、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を活用し、株価を予測したり株価が上昇する銘柄を予測したりしています。
興味がある方は併せてご覧ください。




コメント