LoginSignup
6
9

More than 5 years have passed since last update.

japandas.DataReaderの代替モジュールを作った

Posted at

概要

japandasのリモートデータアクセス機能を使うとYahoo! ファイナンスから国内株式の情報を取得できますが、いろいろ改善したいと思う点があったので、前から作っていたやつをfin-pyもくもく会#2のあいだで完成させました。

課題

  • 株式分割の際に余計なレコードが取得されてしまう
  • 会社情報もほしい
  • 決算情報もほしい

japandasの実装では、pd.read_html()でHTMLをスクレイピングしていますが、単純に画面上の表をそのまま拾ってきているだけなので取得期間によっては分割イベントを拾ってしまいます。

japandasで取得してみた例
import japandas as jpd
jpd.DataReader('8411', 'yahoojp', '2008-12-15', '2009-01-15')

実行結果

始値 高値 安値 終値 出来高 調整後終値*
日付            
2008/12/19 259400 270600 253200 259900 281076 259.9
2008/12/22 266400 276000 265800 270200 164024 270.2
2008/12/24 262200 268100 254400 257700 96027 257.7
2009/1/5 分割: 1株 -> 1000株 NaN NaN NaN NaN NaN
2009/1/5 283 294 279 292 91382100 292
2009/1/6 297 299 287 289 112779100 289
2009/1/7 293 298 289 296 79444700 296

いまいちですね…
四本値をチャートに表示させたい場合、終値以外も修正しないといけません。

できたもの

というわけで作ったのがこちら。japandas同様にpandas_datareaderを継承していますので、ほぼ同様に使えます。
sawadyrr5/YahooJapanDataReader

Jupyterの%timeitで計測してみても20%程度高速化したようです。内部処理をXPathでパースするようにしたからでしょうか?

6
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9