Python
AWS
pandas
cloud9
pandas-datareader
0

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はpythonのパッケージです。(むかしで言うとライブラリですかね)データ分析するのに便利な機能がいっぱいあります。統計とかなんとか、なんか大概のことはあります。グラフ表示とかもありますし。中身はmatplotlibなんすかね、この辺はnumpyとかpandasとか絡まりあっていてよくわかりません。

そして、今回の主役pandas-datareaderです。株価などのデータをwebから拾ってくる、それはそれは便利なパッケージです。もともとはpandasの一部だったようですが、独立したようです。

やってみる

前置きとスカートは短い方がいいということで、さっそくやってみます。

pandas-datareaderをインストールする

cloud9の環境を立ち上げるまでは各自お願いするということで、インストールから始めます。

以下をターミナルに打ち込みます。
$sudo pip install pandas-datareader

するとpandasとかnumpyとか必要なものはあれよあれよとインストールされます。なんて便利な世の中でしょうね。

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,start,end)です。

nameはティッカーシンボルです。ちなみに'SNE'はソニーです。
data_sourceはIEXを指定しています。

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