注目キーワード
  1. Python
  2. コンペ

PythonでYahoo Financeから株価を取得する方法|yfinanceの使い方を解説

  • 2026年6月30日
  • 2026年6月30日
  • Python
  • 0件

Pythonとyfinanceでできること

Pythonを使うと、Yahoo Financeが提供している株価データをコードから取得できます。国内・海外を問わず、上場銘柄の過去の株価や出来高などを手軽に扱えるのが特徴です。

この記事では、yfinanceライブラリを使った株価データの取得方法を解説します。インストールから基本的な取得方法、よくある使い方、注意点まで順に説明していきます。

yfinanceとは

yfinanceは、Yahoo FinanceのデータへアクセスするためのオープンソースのPythonライブラリです。APIキーなしで株価の履歴データや企業情報を取得できます。

取得できる主なデータは以下のとおりです。

  • 過去の株価(始値・高値・安値・終値)
  • 出来高
  • 配当・株式分割の履歴
  • 企業の基本情報(時価総額、PERなど)

なお、Yahoo Financeのデータは非公式なアクセスを前提とした仕組みであるため、仕様が変わることがあります。本番環境での利用や自動収集には注意が必要です。

インストール方法

yfinanceはpipでインストールします。

pip install yfinance

インストール後はimport yfinance as yfとして読み込みます。

基本の使い方

Tickerオブジェクトで銘柄を指定する

まず、取得したい銘柄のティッカーシンボルを指定します。

import yfinance as yf

ticker = yf.Ticker("AAPL")

"AAPL"はAppleのティッカーシンボルです。日本株の場合は"7203.T"(トヨタ自動車)のように、ティッカーの末尾に.Tを付けます。

historyで過去の株価を取得する

.history()メソッドを使うと、指定した期間の株価データをDataFrame形式で取得できます。

import yfinance as yf

ticker = yf.Ticker("AAPL")
df = ticker.history(period="1mo")
print(df.head())
                  Open        High         Low       Close    Volume  Dividends  Stock Splits
Date
2026-05-29  198.230003  200.759995  197.600006  199.610001  55123400        0.0           0.0
2026-06-02  200.100006  202.350006  199.479996  201.899994  48921000        0.0           0.0
...

periodパラメータには以下の値を指定できます。

期間
"1d"1日
"5d"5日
"1mo"1ヶ月
"3mo"3ヶ月
"6mo"6ヶ月
"1y"1年
"2y"2年
"5y"5年
"max"取得可能な全期間

日付を指定して取得する

期間を”2024-01-01″のような形式で指定することもできます。

import yfinance as yf

ticker = yf.Ticker("7203.T")
df = ticker.history(start="2024-01-01", end="2024-06-30")
print(df.head())
                  Open        High         Low       Close      Volume  Dividends  Stock Splits
Date
2024-01-04  2700.0  2763.5  2695.0  2755.5  11823200        0.0           0.0
...

startendの両方を指定すると、その範囲のデータを取得できます。endの日付は含まれない点に注意してください。

downloadで複数銘柄を一括取得する

基本的な書き方

yf.download()関数を使うと、複数銘柄のデータをまとめて取得できます。

import yfinance as yf

df = yf.download(["AAPL", "MSFT", "GOOGL"], period="3mo")
print(df.head())
Price       Close                          ...
Ticker       AAPL        GOOGL        MSFT ...
Date
2026-03-31  170.33  164.21  382.14 ...
...

複数銘柄を指定するとMultiIndex形式のDataFrameが返ります。1銘柄だけ指定するとシンプルなDataFrameになります。

特定の列だけ取り出す

終値(Close)だけを取り出す場合は以下のようにします。

import yfinance as yf

df = yf.download(["AAPL", "MSFT"], period="1mo")
close = df["Close"]
print(close.head())
Ticker       AAPL        MSFT
Date
2026-06-02  201.90  415.23
2026-06-03  200.45  413.80
...

よくある使い方

株価をグラフで表示する

取得したデータはmatplotlibでそのまま描画できます。

import yfinance as yf
import matplotlib.pyplot as plt

ticker = yf.Ticker("AAPL")
df = ticker.history(period="6mo")

plt.figure(figsize=(10, 4))
plt.plot(df.index, df["Close"])
plt.title("AAPL Close Price")
plt.xlabel("Date")
plt.ylabel("Price (USD)")
plt.tight_layout()
plt.show()

企業情報を取得する

.info属性で企業の基本情報を辞書形式で取得できます。

import yfinance as yf

ticker = yf.Ticker("AAPL")
info = ticker.info

market_cap = info.get("marketCap") or 0
pe_ratio = info.get("trailingPE") or "N/A"

print(f"時価総額: {market_cap:,}")
print(f"PER: {pe_ratio}")
時価総額: 3050000000000
PER: 32.5

.infoから取れる項目は銘柄によって異なります。値がない場合はNoneが返ることもあるため、get()とデフォルト値を組み合わせると安全です。

配当データを取得する

配当の履歴は.dividendsで取得できます。

import yfinance as yf

ticker = yf.Ticker("AAPL")
dividends = ticker.dividends
print(dividends.tail())
Date
2025-08-09    0.25
2025-11-07    0.25
2026-02-06    0.25
2026-05-09    0.25
Name: Dividends, dtype: float64

よくあるミスと注意点

日本株のティッカーに .T を忘れる

日本の上場銘柄を取得するときは、ティッカーの末尾に.Tが必要です。

# NG:データが取得できないか、別の銘柄のデータが返る可能性がある
ticker = yf.Ticker("7203")

# OK:トヨタ自動車
ticker = yf.Ticker("7203.T")

データが空のDataFrameになる

ティッカーシンボルが間違っている場合や、指定した期間にデータがない場合は空のDataFrameが返ります。

import yfinance as yf

ticker = yf.Ticker("INVALID_TICKER")
df = ticker.history(period="1mo")

if df.empty:
    print("データが取得できませんでした。ティッカーシンボルを確認してください。")

取得後にdf.emptyで確認する習慣をつけると、エラーに気づきやすくなります。

start/endの日付指定ミス

history(start=..., end=...)のend日付は取得範囲に含まれません。たとえばend="2024-06-30"とすると、6月29日分までのデータが返ります。

import yfinance as yf

ticker = yf.Ticker("AAPL")
# 2024年6月30日のデータも含めたい場合は end を翌日にする
df = ticker.history(start="2024-06-01", end="2024-07-01")

Yahoo Financeの仕様変更でエラーになる場合

yfinanceはYahoo Financeの非公式なデータ構造を利用しているため、Yahoo Finance側の変更でデータが取れなくなることがあります。エラーが出た場合はpip install --upgrade yfinanceでライブラリを最新版に更新すると解消されることが多いです。

pip install --upgrade yfinance

AI時代での補足

AIにデータ分析のコードを書いてもらう場面が増えていますが、yfinanceの仕様変更はAIの知識に反映されていないことがあります。取得できるか確認するコードを自分で読めると、AIの出力が古い書き方かどうかを判断しやすくなります。

まとめ

yfinanceを使うと、Pythonから株価データを手軽に取得できます。この記事で紹介した内容を整理すると以下のとおりです。

  • pip install yfinanceでインストールする
  • yf.Ticker("ティッカー").history(period=...)で過去の株価を取得する
  • yf.download([...], period=...)で複数銘柄をまとめて取得する
  • 日本株は末尾に.Tを付ける
  • データが空の場合はdf.emptyで確認する

取得したデータはpandasのDataFrameとして扱えるため、集計やグラフ描画にそのまま使えます。時系列データの分析手法については、Python 時系列データ分析の入門で詳しく解説しています。

最新情報をチェックしよう!