はじめに
モチベーション
近頃、ちまたでは人工知能のライブラリが簡単に使えるのだそうです。そしてそれを使ったら、もしかして株価予測とかで一儲けといけるのではないかと思ったりするわけです。
しかし、それには株価のデータを集めなくてはならないんですよね。
AIはデータが命ですから。
データ分析とかAIとかだと、とりあえずpythonでしょう。そこでpythonで何かないかなあと調べてみると、pandas-datareaderといういいものがあるそうな。
(これを使い始めた頃はGoogleとかyahooとかデータが取れたんですが、最近どんどん取れなくなってきています。世知辛い世の中ですね)
まあそれはさておき、とりあえず始めていきましょう!
作るもの
pandas-datareaderを使って、過去の株価データを拾ってきてCSVに保存するプログラミング。
わざわざ書くまでもないですかね。
使うもの
・AWS cloud9
・python(2.7.14)
・pandas(0.23.4)
・pandas-datareader(0.7.0)
AWS cloud9は様々なプログラミング言語の開発と実行がクラウド上でできるAWSのサービスです。とりあえず動くものをサクッと作りたい場合にたいへん重宝します。私の記事は基本これを使っていきます。
pythonは言わずもがなですよね、データサイエンスだと、とりあえずこれみたいになってます。書きやすいと言われれば書きやすいと思います。それよりも、むしろpandasみたいなパッケージが使えるから使っている感じです。
pandasはpythonのパッケージです。(C言語とかで言うとライブラリですかね)データ分析するのに便利な機能がいっぱいあります。統計とかなんとか、なんか大概のことはあります。グラフ表示とかもありますし。中身はmatplotlibなんすかね、この辺はnumpyとかpandasとか絡まりあっていてよくわかりません。
そして、今回の主役pandas-datareaderです。株価などのデータをwebから拾ってくる、それはそれは便利なパッケージです。もともとはpandasの一部だったようですが、独立したようです。
やってみる
前置きとスカートは短い方がいいということで、さっそくやってみます。
pandas-datareaderをインストールする
cloud9の環境を立ち上げるまでは各自お願いするということで、インストールから始めます。
以下をターミナルに打ち込みます。
$sudo pip install pandas-datareader
するとpandasとかnumpyとか必要なものはあれよあれよとインストールされます。なんて便利な世の中でしょうね。
pythonのコードを書きましょう
続いてpythonのコードを書きます。
import pandas_datareader.data as pdr
import datetime
end = datetime.date.today()
start = end - datetime.timedelta(days=10)
pd_data = pdr.DataReader('SNE', 'iex', start, end)
print(pd_data)
pd_data.to_csv("data.csv")
コードはものすごく単純です。パッケージをimportして、データ取得日時のstartとendを決めて、DataReaeder()を呼び出します。最後に表示して保存するだけです。
一番の肝はDataReader()です。引数を以下に示します。
引数 | 説明 | 補足 |
---|---|---|
name | データセット名 | ティッカーシンボルを指定 |
data_source | データソース名 | fred, google や yahoo など |
start | 取得開始年月日 | datetime 型で指定 |
end | 取得終了年月日 | datetime 型で指定 |
他のデータソースには
- Google Finance
- Tiingo
- Morningstar
- IEX
- Robinhood
- Enigma
- Quandl
-FRED
- Fama/French
- World Bank
- OECD
- Eurostat
- TSP Fund Data
- Nasdaq Trader Symbol Definitions
- Stooq Index Data
- MOEX Data
があるそうです。取りたい放題ですね。
ただ、近頃はgoogle Financeもうまく取れないような気もします。
詳しくは以下を参照ください。
pandas datareader documentation
細かいですが、pipでインストールしたときはpandas-datareader(ハイフンです)でコードでimportするときはpandas_datareader(アンダーバーです)なのでご注意ください。
コードを実行!
$python DataReader.py
とターミナルに打ち込みましょう。
こんな結果がでれば成功です。
open high low close volume
date
2018-09-24 56.94 57.120 56.65 56.85 1276700
2018-09-25 58.70 58.800 58.32 58.53 1154906
2018-09-26 59.71 59.800 59.31 59.45 1069159
2018-09-27 59.39 59.795 59.19 59.53 608786
2018-09-28 61.00 61.000 60.47 60.65 1584606
2018-10-01 60.81 61.020 60.53 60.58 633026
2018-10-02 60.10 60.170 59.71 59.82 727515
2018-10-03 58.65 58.670 58.26 58.32 979485
なんという事でしょう。たった数行で世の中のデータをこの手にできました。いや1行と言っても過言ではないですね。これを使えば株の自動売買で働かずにむふふですね。
終わりに
今回はpandas-datarederを使って、株価をwebから引っ張ってきてCSVに保存してみました。今度はこれを使ってグラフ化したり統計量を計算したり、そして念願の機械学習で予測したりしてみましょう。