yfinanceのticker.infoでエラー発生!? AttributeError・KeyErrorの原因と対処法


📌 この記事でわかること:

  • yfinance.Ticker.info 使用時に発生する AttributeError / KeyError の原因
  • 存在しないティッカーやETFなどでエラーが出る理由
  • エラー回避のための安全なコーディング方法と実装パターン

👤 対象となる読者:

  • Pythonで株価や企業情報を取得している初心者~中級者
  • yfinance を活用して株価分析・データ取得を行いたいプログラマー
  • API使用時のエラー処理のベストプラクティスを学びたい方

🔧 活用できるシーン:

  • ETFや外国株などの例外ケースを含む分析に対応したいとき
  • 投資分析ツールをPythonで自作しているときに、銘柄によってエラーが発生した場合
  • 自動スクリーニング処理で複数ティッカーを処理する際に落ちにくいコードを書きたいとき

目次

1. はじめに

Pythonで株価や企業情報を取得する際、yfinanceticker.infoは便利な機能です。
しかし、すべての銘柄で常に正常に動作するとは限らず、思わぬエラーに遭遇することがあります。

この記事では、以下のような具体的なエラー事例をもとに、原因と対処法をわかりやすく解説します:

  • AttributeError(存在しないティッカー)
  • KeyError(ETFなど特定キーが存在しない)

ticker.infoを活用する際の注意点として、参考にしてください。


2. 成功例:正常に取得できるパターン

代表的な銘柄「AAPL(Apple)」では、次のように問題なく情報が取得できます:

import yfinance as yf

ticker = yf.Ticker("AAPL")
info = ticker.info
print(info['sector'])  # → "Technology"

このように、存在する主要銘柄では期待通りに動作します。
ただし、これは“常に安全”という保証ではありません。


3. AttributeError:存在しないティッカー指定時

▶ 発生コード例

import yfinance as yf

ticker = yf.Ticker("AAPLL")  # 存在しないティッカー
info = ticker.info
print(info['sector'])

▶ 代表的なエラー

  • AttributeError: 'NoneType' object has no attribute 'update'
  • TypeError: 'NoneType' object is not subscriptable
  • HTTPError: 404 Client Error: Not Found for url...

▶ 原因

指定したティッカーがYahoo Financeに存在しないため、APIレスポンスが404となり、 infoNoneまたは内部的に不正な状態になります。

その結果、後続の処理でAttributeErrorやTypeErrorが発生します。

▶ 対処法

  • ティッカーの存在確認を事前に行う
  • info is not None でチェックしてからアクセス
  • try-exceptで安全に例外処理を加える
if info is not None and 'sector' in info:
    print(info['sector'])
else:
    print("情報が取得できませんでした。")

4. KeyError:特定のキーが存在しないパターン

▶ 発生コード例(例:ETF「VOO」)

import yfinance as yf

ticker = yf.Ticker("VOO")
info = ticker.info
print(info['sector'])  # KeyError

▶ エラー内容

  • KeyError: 'sector'

▶ 原因

ETFなど一部の金融商品では、info特定のキーが含まれていないことがあります。
株式銘柄とは異なり、業種(sector)などの情報が省略されていることがあるためです。

▶ 対処法

  • 'sector' in info でキーの存在を確認する
  • .get() メソッドでデフォルト値付きで取得する
sector = info.get('sector', '情報なし')
print(sector)

他にも、yfinanceではキーが見つからずKeyErrorが発生するケースがあります。
特に 'Adj Close' が取得できない場合については、以下の記事で詳しく解説しています:

yfinanceで’Adj Close’がない!? KeyErrorの原因と対処法


5. まとめ

yfinance.Ticker.info は非常に便利なAPIですが、

  • 存在しないティッカーによるAttributeError系の問題
  • ETFなどに見られるKeyError といったエラーが起こる可能性があります。

これらを防ぐためには:

  • info is not None の確認
  • .get()in を使った安全なキーアクセス
  • 予防的なtry-exceptの活用 が有効です。

実装時には「infoは常に取得できるわけではない」という前提でコードを書くことで、 yfinanceをより安定して活用できるようになります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Python・投資・業務効率化をテーマにしたブログを運営しています。
本業では社内ツール・アプリの運営・開発をしており、趣味はキャンプや食べ歩きです。

このブログでは、実体験や実務で役立った知識をベースに、
初心者でも再現できる情報発信を心がけています。

コメント

コメントする

目次