40で無職になったおっさんのブログ

40歳にして無職になってみました。

関数化

今読んでいる機械学習ディープラーニングの本はscikit-learnとTensorFlowによる実践機械学習という本で、これがかなり良いです。

www.oreilly.co.jp

第2章で実際の機械学習のやり方を教えてくれるのですが、ここで言われているのが色々素人の私にはよかった。データの取得も関数化しよう!というところです。私もこれまでスポット的にデータを使っていたので、pandasのread_csvとかでURIを指定して落としてというようなことを行っていましたが、一つの関数を実行すれば、保存され、もう一つの関数が実行されれば、データが成形されるというような流れを、この2章を読んでやっていこうと思いました。

というか、もっと言うと、繰り返して行う分析作業を色々とやりながら、投資しようというアイデアが出てきたということかもしれません。

わたしも企業から離れデータは自分で集めて自分で作らないといけなくなりました。そこで思うのは、データは色んな所に点在していて、それを集めるのが結構面倒だなというところです。

その中でも株をやるうえで重要なのは、上場企業のデータです。これがないとデータ集めもままならない。しかし、これがあれば色々とデータ集めがはかどります。

この資料は日本取引所のホームページにあることを最近知りました。ありがとう日本取引所様!

というわけで、色々とデータを集める前にこのデータをローカルに保存して、その後、色々とデータを継ぎ足していきながら使える状態に持っていきたいと思います。

で、今日は超簡単なウェブ上にあるファイルをローカルに保存するという部分をメモしておきます。

ウェブ上にあるファイルをローカルに保存する場合、Python3系ですとurllib.requestというライブラリのurlretrieveという関数を使うとできます。今後は自分で作った関数を使ったら落ちる状態にしておきたいので、関数に纏めておきます。

import urllib.request

stock_list_url = "http://www.jpx.co.jp/markets/statistics-equities/misc/tvdivq0000001vg2-att/data_j.xls"
save_path = "stock_list.xls"

def save_stock_list(stock_list_url, save_path):
     urllib.request.urlretrieve(stock_list_url, save_path)

ちなみに本ではfrom six.moves import urllib となっていました。このsixというライブラリはpython2と3の互換性ライブラリで、2×3=6からsixということのようです。こっちを使ってる方がカッコいいみたいに中二的に思ったのですが、なんか表示は普通にしておきました。

Six: Python 2 と 3 の互換性ライブラリ — six 1.9.0 ドキュメント

これで日本取引所に上場されている銘柄一覧を取り込めるようになりました。心配なのはURLが毎回変わるのか否かという点で、もし変わるのであれば、URLをとってくる方式に変更しないといけないなと考えています。