よっしーの私的空間

機械学習を中心に興味のあることについて更新します

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となっている)
f:id:t-yoshi-book:20210718131644p:plain

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))

結果は以下の通りです。指定した通りにデータが取得できていることが確認できます。
f:id:t-yoshi-book:20210718133236p:plain