株式投資

バフェット・コード の API でデータを全取得する 3/3(後処理編)


この記事について

バフェット・コード の API でデータを全取得する 1/3(準備編)
バフェット・コード の API でデータを全取得する 2/3(取得編)
と続けてきましたが、今回の記事でバフェット・コード API のデータを取得することについての記事はひとまず完結です。
といっても今回の記事はおまけのようなもので、実際の取得処理は前回までで終わっています。
今回は取得した CSV データを分析に活用しやすくするために後処理を少し加えます(`・ω・´)!

後処理のポイント

四半期が重複しているデータの除外

四半期データを取得して銘柄ごとに CSV ファイルにして確認すると気づきますが、同じ四半期で複数のデータがあるケースがあります。ウーム(´へ`;

何でかはわからないのですが、訂正があって出し直した場合とかなんですかね?

もともと取得時の JSON データは四半期の順番がソートされているわけではなさそうですし(これはJSONの仕様上?)、重複データのどれが最新のものかを判別するのは難しそうです。データの発表日時とかが入ってればそれを元に判断できるのですが。
とはいっても重複してると分析時に何かと不便なので、とりあえず適当に一つ残してあとは捨てることにします。(バフェット・コードさん、重複がないように直してくれるといいなぁ・・、チラッ)

CSV ファイルを pickle ファイルに変換

取得した四半期データ・指標データの CSVファイルはそれぞれ 4000弱程度の数がありかなり多いです。
全データを読み込んで分析する、みたいなこともやりたいと思っているのですが、実際、四半期データ(2010Q1-2018Q4の範囲を指定して取得)を普通に pandas.read_csv() で全部読み込むと私の愛用マシン(Thinkpad X1 carbon 2017 モデル、Ubuntu, Python 3.6.7)では、下記で載せるように 12.5 秒かかります。

まあ待てない時間ではないですが、それが毎回かかるのはちょっとダルいですよね。。
そこでなんか良い方法ないかなあと探して今回見つけたのが “pickle” を使った方法でした。
pickle が何かご存知ない場合(自分も知らなかった)はググっていただくとして、これを使うと Python のオブジェクトを直接ファイルとして保存しておくことができるようです。
pickle=漬物、って良いネーミングですね。今回考えたのは pandas の Dataframe を漬物にしておく作戦です。

試しに、実際にバフェット・コード API から取得した四半期データで、 CSV と pickle からの読み込み速度を比較した結果を載せておきます。

結果は

pandas.read.csv() : 12.5 秒
pickle.load() : 1.05 秒!!

pickle の読み込みだと爆速ですね・・。これなら毎回スムーズに分析ができそうです。

後処理用 Python スクリプト

前回までのやり方で取得した CSV ファイル群に対して、
* 重複データの除外
* pickle して保存
などの後処理をするスクリプトを作ったので貼っておきます。

前回のスクリプトに組み込んでも良かったのですが、取得データはなるべくそのままの形で一旦CSVにして取っておきたかったので、とりあえずそれとは分けました。実際にデータ活用を進めていくうちに、必要に応じて便利なように後処理はさらに追加していくかもしれません。

使い方としては、前回の記事で解説した形で bc_data/quarter/xxxx.csv, bc_data/indicator/xxxx.csv (xxxxは銘柄コード) があるとすると、

$ ./bc_convert.py bc_data/quarter -o bc_data_pkl/quarter
$ ./bc_convert.py bc_data/indicator -o bc_data_pkl/indicator

のように実行すると、bc_data_pkl/quarter/xxxx.pkl, bc_data_pkl/indicator/xxxx.pkl のような形で後処理した pickle ファイルが出力されます。

まとめ

今回でバフェット・コードの web API からのデータ取得の記事は完結です。お付き合いいただきありがとうございました。
今回は取得して CSV で保存したデータをさらに使いやすいように、重複データの削除、pickle での保存、を解説しました。

・・・さあ、いよいよ準備が整いました!
あとは取得したデータをどう活用していくか、ということになります。データを取ってくるのが目的ではないので。実際の株式投資にもしっかり役立てたいと考えています。

手元にデータがあるわけなので、本当に自由にいじり回せます。夢が広がりますね(笑)。
また記事も書きたいと思いますのでご期待ください!

コメント

  1. 匿名 より:

    参考になりました!

タイトルとURLをコピーしました