Pythonで株価を取得する方法【yfinanceで日本株も対応】

Uncategorized

※本記事には広告・アフィリエイトリンクが含まれます。掲載内容は筆者の調査・検証に基づき、読者の判断を助ける目的で作成しています。

結論から言うと

  • yfinanceを使えば、Pythonで日本株・米国株の株価データを数行のコードで取得できます
  • 日本株はティッカーシンボルの末尾に「.T」を付けることで取得できる仕組みです
  • 取得したデータはpandasのDataFrame形式で返ってくるため、そのままグラフ表示や分析に使えます

率直に言うと、株価データの取得は以前なら証券会社のAPIや専用ライブラリが必要でしたが、yfinanceの登場でかなりシンプルになりました。実際に7203.T(トヨタ)、6758.T(ソニー)、9984.T(ソフトバンクG)で確認したところ、いずれも問題なく動作しています。

動作確認環境:Python 3.11 / pandas 2.x / yfinance 0.2.x / matplotlib 3.x

yfinanceとは

yfinanceはYahoo! Financeのデータを取得するためのPythonライブラリです。米国株はもちろん、日本株・ETF・為替・仮想通貨など幅広い金融データに対応しています。

オープンソースで無料で使えるため、個人投資家やアルゴリズムトレードの学習者に広く使われているライブラリです。また、pandas DataFrameでデータが返ってくるため、後続の分析処理がそのまま書けます。

インストール方法

pip経由でインストールできます。

pip install yfinance

すでにインストール済みの場合は、バージョンを確認しておくとよいです。0.2.x以上が推奨です。

import yfinance
print(yfinance.__version__)

日本株の株価を取得するコード(トヨタ:7203.T)

日本株のティッカーシンボルは、証券コードの末尾に「.T」を付ける形式です。トヨタ自動車(証券コード7203)であれば「7203.T」となります。

import yfinance as yf

# トヨタ自動車(7203.T)の株価を取得
ticker = yf.Ticker("7203.T")
df = ticker.history(period="3mo")
print(df.tail())

実行すると、以下のような形式のDataFrameが返ってきます。

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

periodパラメータには「1d」「5d」「1mo」「3mo」「6mo」「1y」「2y」「5y」「10y」「ytd」「max」が指定できます。特定の期間を指定したい場合はstartendパラメータを使う方法もあります。

import yfinance as yf

# 期間を指定して取得
df = yf.download("7203.T", start="2024-01-01", end="2024-12-31")
print(df.head())

複数銘柄をまとめて取得する方法

複数の銘柄を一度に取得したい場合はyf.download()にリストを渡す方法が使えます。

# 複数銘柄をまとめて取得
import yfinance as yf
tickers = ["7203.T", "6758.T", "9984.T"]
data = yf.download(tickers, period="3mo")
print(data["Close"])

このコードでトヨタ・ソニー・ソフトバンクGの終値データが列ごとに並んだDataFrameが返ってくる仕組みです。実際に確認したところ、3銘柄とも正常にデータが取得できました。

取得できるデータの種類(終値・始値・高値・安値・出来高)

Tickerオブジェクトを使うと、株価以外のデータも取得できます。

import yfinance as yf

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

# 企業情報
info = ticker.info
print(info.get("longName"))        # 企業名
print(info.get("marketCap"))       # 時価総額

# 財務情報
print(ticker.financials)           # 損益計算書
print(ticker.balance_sheet)        # 貸借対照表
print(ticker.dividends)            # 配当履歴

よくあるエラーと対処法

yfinanceを使っていて遭遇しやすいエラーをまとめます。

  • 空のDataFrameが返る:ティッカーシンボルに「.T」が付いていないケースが多いです。「7203」ではなく「7203.T」と指定します
  • No data found エラー:yfinanceのバージョンが古い可能性があります。pip install –upgrade yfinanceで更新します
  • ConnectionError:ネットワーク接続かYahoo! Finance側の一時的な障害です。少し時間をおいて再試行します

次のステップ

株価データが取得できたら、次はグラフ表示や分析に進むとよいです。

  • 株価チャートをmatplotlibで表示する
  • 移動平均線を追加する
データ取得方法の比較はこちら
yfinance以外のデータ取得手段も含めた比較記事:Python株価データ取得ライブラリ比較

※当サイトの内容は投資判断を推奨するものではありません。掲載しているコード・分析例は学習・検証目的であり、実際の投資はご自身の責任で行ってください。

🔗 関連記事

Pythonで株価チャートを表示する方法【matplotlib・yfinance】

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