LoginSignup
22
35

More than 5 years have passed since last update.

金融関係のデータをpythonで取得する(then ちょっといじる)

Last updated at Posted at 2017-04-13

バージョンの確認

今回使ったpythonのバージョンは以下です.

python --version
Python 3.5.1 :: Anaconda 4.0.0 (x86_64)

今回使うものをインストールします.

pip install quandl
pip install pandas-datareader
pip install jsm
pip install stockstats

金融関係のデータの取得

まず結論としては,Quandl, pandas_datareader, jsmあたりが存在し,Quandl, pandas_datareaderを使うのがよさそうです.(他にもあれば教えてください.ありそう.)

Quandl

公式のドキュメントはここ
とりあえずアップルの株価を取得してみます.

import quandl

d = quandl.get("WIKI/AAPL")

d.columns
# Index(['Open', 'High', 'Low', 'Close', 'Volume', 'Ex-Dividend', 'Split Ratio',
#        'Adj. Open', 'Adj. High', 'Adj. Low', 'Adj. Close', 'Adj. Volume'],
#       dtype='object')

d.shape
# (9162, 12)

ここになぞのWIKIというワードが入っていますが,これはデータの公開元で,このへんに書いてあります.

データは日時のみっぽい.

また,過去の記事でimport Quandlとなっているものもありますが,途中から小文字になったようです.

pandas_datareader

公式のドキュメント

import pandas_datareader as pdr

d = web.DataReader("AAPL", 'google')

# Parameters
# ----------
# name : str or list of strs
#     the name of the dataset. Some data sources (yahoo, google, fred) will
#     accept a list of names.
# data_source: {str, None}
#     the data source ("yahoo", "yahoo-actions", "yahoo-dividends",
#     "google", "fred", "ff", or "edgar-index")
#以下略

d.shape
(1831, 5)

d.columns
# Index(['Open', 'High', 'Low', 'Close', 'Volume'], dtype='object')

一つめの引数でアップルを指定し,データソースにgoogleを指定しています.

データは同様に日次のみな模様.

取得期間の指定は以下のようにできる.

import pandas_datareader as pdr
import datetime

start = datetime.datetime(2015, 1, 1)
end = datetime.datetime(2017, 4, 12)
d = pdr.DataReader("AAPL", 'google', start, end)

d.shape
# (574, 5)

jsm

jsmは2015年で開発が止まっている上に,yahooからデータをスクレイピングしていると書いてあります.
yahooはここでスクレイピングは禁止と言っており,使わない方がいいかなあ,という感じです.

金融データをいじる

stockstats

取得した金融データをいじるパッケージとして,stockstatsがあります.

import stockstats
import quandl

d = quandl.get("WIKI/AAPL")

d.shape
# (9162, 12)

type(d)
# pandas.core.frame.DataFrame

stock = stockstats.StockDataFrame.retype(d)

type(stock)
# stockstats.StockDataFrame

stockstatsは,retypeメソッドによってpandas dataframeを拡張した,stockstats.StockDataFrameという型にかえてくれます.これによって,たとえばMACDの計算などを,

stock['macd']
# Date
# 1980-12-12    0.000000
# 1980-12-15   -0.033654
# 1980-12-16   -0.104902
# 1980-12-17   -0.112351

このように簡単に行ってくれます.

retypeに渡すデータフレームのkeyは,中のコードをみるとlower関数で小文字にしているので,大文字小文字の違いは吸収してくれそうですが,計算したいもののデータがない場合はkey errorになります.なので普通使われない変数を使うとき,もしくは変数が少ないときは,pandasのままの書いた方がいいかもしれません.

22
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
35