pandas-datareaderで株価データを取得する際に日付を指定できない問題
※2021/11/4現在において「日付を指定できない問題」が解消していることを確認しました。
※同様の事象が再発した場合の参考になるかもしれないので、本記事は残しておきます。
株価データを取得する際に、多くの人がpandas-datareaderを使ってStooq(各種経済データを公開しているポーランドのサイト)からデータを取得していると思います。私もよく使うのですが、ひさしぶりに使ったところ、日付指定ができなくなっていることに気づきました。ちなみにpandas-datareaderのバージョンは0.10.0です。
事象の説明と解決策についてまとめます。
1.事象:日付が指定できない問題
以下のようなコードを実行したところ、問題が発生しました。
import pandas_datareader.data as web from datetime import datetime st = datetime(2015, 1, 1) ed = datetime(2020, 1, 1) stooq = web.DataReader('6902.JP','stooq',start=st,end=ed) #startとendを指定することで取得期間を指定 display(stooq.head(3)) display(stooq.tail(3))
結果は以下の通り。日付指定がうまくできていません。(2015/1/1~2020/1/1のデータを取得しようとしたのに、2010/1/4~2021/7/15となっている)
2.解決策
使用する関数をpandas_datareader.stooq.StooqDailyReader.read()に変更したところ、解決できました。実行したコードは以下の通りです。
import pandas_datareader.stooq as web from datetime import datetime st = datetime(2015, 1, 1) ed = datetime(2020, 1, 1) stooq = web.StooqDailyReader('6902.JP',start=st,end=ed).read() display(stooq.head(3)) display(stooq.tail(3))
結果は以下の通りです。指定した通りにデータが取得できていることが確認できます。