※本記事には広告・アフィリエイトリンクが含まれます。掲載内容は筆者の調査・検証に基づき、読者の判断を助ける目的で作成しています。
結論から言うと
- 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」が指定できます。特定の期間を指定したい場合はstart・endパラメータを使う方法もあります。
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株価データ取得ライブラリ比較
※当サイトの内容は投資判断を推奨するものではありません。掲載しているコード・分析例は学習・検証目的であり、実際の投資はご自身の責任で行ってください。

