【Python】yfinanceが使えなくなった時の対処方法を紹介

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

先日、yfinanceで株価を取得しようとしたところ、エラーで取得できなくなっていました。

結果的に次の2つをすることで使用できるようになりました。

  • yfinanceのアップデート
  • 株価を取得する記述の変更

今回は、yfinanceが使えなくなった時の対処方法を紹介します。

yfinanceが使えなくなった時の症状

yfinanceを使用した時に、次のようなエラーが発生しました。

TeX
Failed to get ticker '^N225' reason: Expecting value: line 1 column 1 (char 0)
[*********************100%***********************]  1 of 1 completed

1 Failed download:
['^N225']: YFTzMissingError('$%ticker%: possibly delisted; no timezone found')

YFTzMissingErrorというのは、タイムゾーンが見つからないというエラーのようです。

なぜこのようなエラーが発生するようになったのかは、はっきりわかりませんが、株価の参照元に何らかの仕様変更があったのかもしれません。

対処方法

結果的に次の2つをすることで、これまで通りに株価を取得できるようになりました。

yfinanceのアップデート

yfinanceをアップデートすることで、先程のYFTzMissingErrorが発生しなくなりました。記事執筆時点での最新バージョンは、0.2.54です。

Python
pip install -U yfinance

アップデートで株価は取得できるようになりましたが、取得したデータを使用したところ、次のエラーが発生しました。

TeX
ValueError: Data for column "Open" must be ALL float or int.

ValueErrorで、「Open」の列のデータはすべて float 型または int 型である必要があるということです。

デバックすると、float 型で問題ないように思います。

このエラーについて検索すると、株価を取得する記述の変更でエラーが出なくなるという記述がありました。

株価を取得する記述の変更

株価を取得する記述の変更することで、先程のValueErrorが発生しなくなりました。

これまでは、yf.downloadでエラーは発生していませんでしたが、具体的には次のように変更しました。

Python
ticker = yf.Ticker('^N225')
data = ticker.history(start='2024-01-01', end='2024-12-31')

ソース:https://stackoverflow.com/questions/79133206/mplfinance-error-data-for-column-open-must-be-all-float-or-int

なぜこの方法でエラーが発生しなくなるのかは詳しくわかりませんが、これでyfinanceが使用できるようになると思います。

まとめ

以上、yfinanceが使えなくなった時の対処方法を紹介でした。

yfinanceは使い勝手がいいので、この方法で使えるようになって良かったと思います。

過去の記事のソースコードも順次修正していきます。