この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
先日、yfinanceで株価を取得しようとしたところ、エラーで取得できなくなっていました。
結果的に次の2つをすることで使用できるようになりました。
- yfinanceのアップデート
- 株価を取得する記述の変更
今回は、yfinanceが使えなくなった時の対処方法を紹介します。
yfinanceが使えなくなった時の症状
yfinanceを使用した時に、次のようなエラーが発生しました。
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です。
pip install -U yfinance
アップデートで株価は取得できるようになりましたが、取得したデータを使用したところ、次のエラーが発生しました。
ValueError: Data for column "Open" must be ALL float or int.
ValueError
で、「Open」の列のデータはすべて float 型または int 型である必要があるということです。
デバックすると、float 型で問題ないように思います。
このエラーについて検索すると、株価を取得する記述の変更でエラーが出なくなるという記述がありました。
株価を取得する記述の変更
株価を取得する記述の変更することで、先程のValueError
が発生しなくなりました。
これまでは、yf.download
でエラーは発生していませんでしたが、具体的には次のように変更しました。
ticker = yf.Ticker('^N225')
data = ticker.history(start='2024-01-01', end='2024-12-31')
なぜこの方法でエラーが発生しなくなるのかは詳しくわかりませんが、これでyfinanceが使用できるようになると思います。
まとめ
以上、yfinanceが使えなくなった時の対処方法を紹介でした。
yfinanceは使い勝手がいいので、この方法で使えるようになって良かったと思います。
過去の記事のソースコードも順次修正していきます。