やりたいこと
データ分析用に永続データとして日本の株価情報を取得して、MySQLに格納します。
MySQLの環境は、MetabaseとMySQL環境をDockerで作るで作成したMySQLに格納します。
データソース
データソースはQuandlというサイトを利用します。
有料データもありますが、無料でも使えます。
今回はQuandlで収集されているデータの中から、東京証券取引所が提供しているデータを利用します。
環境
- Mac OS X 10.14.2
- Python 3.7.1
- Quandl 3.4.5
手順
アカウント登録
APIキーを取得するためにQuandlのアカウント登録を行います。
登録は無料です。
APIキーの確認
アカウントを作成したら、右上のメニューから[ACCOUNT SETTINGS]を選択します。
プロフィール画面に遷移すると、[YOUR API KEY]にAPIが記載されているのでメモします。
データの取得
実際にデータを取得してみます
※必要なライブラリは適宜インストールしてください。
#!/usr/local/bin/python3
# -*- coding: utf-8 -*-
import datetime
import quandl
import pandas as pd
# 各種設定
## 取得したい日付レンジの指定
start = datetime.datetime(2007, 1, 1)
end = datetime.datetime(2019, 1, 19)
# 取得したい会社のティックシンボルを記載します。
## 例えばの武田薬品工業の場合 TSE/4502 となります。
## https://www.quandl.com/data/TSE/4502-Takeda-Pharmaceutical-Co-Ltd-4502
company_id = 'TSE/4502'
# APIキーの設定
quandl.ApiConfig.api_key = '前の手順で確認したAPIキーをここに記載'
# データ取得
df = quandl.get(company_id ,start_date=start,end_date=end)
データが以下のように取得できていることを確認します。
>>> df.head()
Open High Low Close Volume
Date
2007-01-04 8180.0 8210.0 8170.0 8180.0 1401400.0
2007-01-05 8180.0 8180.0 7970.0 8010.0 3020100.0
2007-01-09 8000.0 8010.0 7940.0 7950.0 2696200.0
2007-01-10 7950.0 7960.0 7760.0 7760.0 3807700.0
2007-01-11 7820.0 7890.0 7710.0 7760.0 3286800.0
MySQLにデータを格納する。
取得したデータをMySQLに格納します。
上の続きと思ってください。
import sqlalchemy as sa
## Indexが日付なので行に取り込んで、データ型を変更する。
df = df.reset_index()
df['Date'] = pd.to_datetime(df['Date'])
## 表名の指定
table_name = 'TAKEDA'
## 接続情報設定
engine = sa.create_engine('mysql+mysqlconnector://stock:stock@127.0.0.1/stock', echo=True)
# MySQLにデータを格納
df.to_sql(table_name, engine , index=False, if_exists='replace')
データの確認
MySQLにアクセスして、データを確認します。
$ mysql --host=127.0.0.1 --user=stock --password
mysql> use stock
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-----------------+
| Tables_in_stock |
+-----------------+
| AAPL |
| TAKEDA |
+-----------------+
mysql> desc TAKEDA;
+--------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------+------+-----+---------+-------+
| Date | datetime | YES | | NULL | |
| Open | double | YES | | NULL | |
| High | double | YES | | NULL | |
| Low | double | YES | | NULL | |
| Close | double | YES | | NULL | |
| Volume | double | YES | | NULL | |
+--------+----------+------+-----+---------+-------+
6 rows in set (0.00 sec)