ふと株価を取得してみたくて試行錯誤していたところ、ちょうど参考になるブログを見つけました。
・Python pandas で日本の株価情報取得とローソク足チャート描画
http://sinhrks.hatenablog.com/entry/2015/02/04/002258
これをそのままやっていくとWarningがでてきたので修正しました。
■環境
Python 3.5.1
Anaconda 4.2.0
pandas.io をインポートすると削除予定と表示される。
C:\Anaconda2\envs\py35\lib\site-packages\pandas\io\data.py:35: FutureWarning: The pandas.io.data module is moved to a separate package (pandas-datareader) and will be removed from pandas in a future version. After installing the pandas-datareader package (https://github.com/pydata/pandas-datareader), you can change the import ``from pandas.io import data, wb`` to ``from pandas_datareader import data, wb``. FutureWarning)
なのでpandas.ioを使わないように修正しました。
# coding: utf-8 from __future__ import unicode_literals import numpy as np import pandas as pd #import pandas.io.data as web import pandas.tools.plotting as plotting import datetime as dt def get_quote_yahoojp(code, start=None, end=None, interval='d'): base = 'http://info.finance.yahoo.co.jp/history/?code={0}.T&{1}&{2}&tm={3}&p={4}' #start, end = web._sanitize_dates(start, end) start = pd.to_datetime(start) if end == None: end = pd.to_datetime(pd.datetime.now()) else : end = pd.to_datetime(end) start = 'sy={0}&sm={1}&sd={2}'.format(start.year, start.month, start.day) end = 'ey={0}&em={1}&ed={2}'.format(end.year, end.month, end.day) p = 1 results = [] if interval not in ['d', 'w', 'm', 'v']: raise ValueError("Invalid interval: valid values are 'd', 'w', 'm' and 'v'") while True: url = base.format(code, start, end, interval, p) tables = pd.read_html(url, header=0) if len(tables)2016/10/2から直近までのマクドナルドの株価を取得する場合
start ='2016-10-02' mac_tse = get_quote_yahoojp(2702, start=start) mac_tse.head() Out[3]: Open High Low Close Volume Adj Close Date 2016-10-03 2981 3005 2979 2989 177100 2989 2016-10-04 2990 2998 2975 2985 222700 2985 2016-10-05 2980 3010 2980 2984 291900 2984 2016-10-06 2985 2990 2965 2971 259600 2971 2016-10-07 2985 2989 2935 2935 439900 2935できました。
関連する投稿:
View Comments