Pythonのpandas-datareaderで株価を取得してみる①

#はじめに
##モチベーション
近頃、ちまたでは人工知能のライブラリが簡単に使えるのだそうです。そしてそれを使ったら、もしかして株価予測とかで一儲けといけるのではないかと思ったりするわけです。

しかし、それには株価のデータを集めなくてはならないんですよね。
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のコードを書きます。

```python:DataReaer.py
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](https://pandas-datareader.readthedocs.io/en/latest/)

細かいですが、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に保存してみました。今度はこれを使ってグラフ化したり統計量を計算したり、そして念願の機械学習で予測したりしてみましょう。