Pythonのライブラリpandas-datareaderで株価を取得する

2021年2月時点 pandas-datareaderはエラーが起こるようです。

こんにちは、@Yoshimiです。

Pythonといえばデータ分析、機械学習、AI開発ですよね。入門として株価予測が人気のようなので私もやってみました。

Pythonモジュールとしてpandas-datareaderがあります。このpandas-datareaderは、経済データや金融商品の価格データが取ることができるようです。詳しくはhttps://pandas-datareader.readthedocs.io/en/latest/index.htmlをチェックしてください。データ取得先はNASDAQ、OECD、世界銀行など色々あります.

実装

私はgoogle colaboratoryを利用することが多いので、google colaboratoryで実装していきます。

モジュールのインストールをします。

import pandas as pd
from pandas import Series, DataFrame
import pandas_datareader.data as web
import numpy as np
import datetime

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

google colaboratoryでは一通りのモジュールが利用できるので特にpandas_datareaderインストールも必要ないです。
インストールが必要であれば、
$sudo pip install pandas-datareader
を打ち込んでください。

start = datetime.datetime(2018, 1, 1)
end = datetime.datetime(2019, 12, 31)

pd_data = web.DataReader('GOOG', 'yahoo', start, end)

pd_data.tail() 

DataReader()の引数にnameにデータセット名(GOOG→googleなど)、data_sourceにデータソース名(yahooなど)、start変数にデータ取得開始年月日、end変数にデータ取得終了年月日が入ります。データソース一覧はpandas-datareaderをチェックしてください。

実行!
tail()を使って、最後尾から表示させています。
カラムの説明

  • Date:日付
  • High:高値
  • Low:安値
  • Open:始値
  • Close:終値
  • Volume:出来高
  • Adj Close:調整後終値

では、表示されたデータがあっているかチェックしてみましょう!
yahoo!ファイナンス掲載、google(アルファベット)の株価です。カラムの順番は異なりますが、各データは一致しています。(すごい!)

googleの株価を折れ線グラフでplotしてみます。

GOOG['High'].plot(figsize=(10,4))

グラフで確認するとすごい上がり具合です。細かいデータ分析は後程・・・

複数の株価をまとめて表示してみます。と、ちょっと取得日付を少アレンジしてみます。

from datetime import datetime

# stock_list = ['AAPL', 'GOOG', 'SNE']
end_ = datetime.now()
start_ = datetime(end.year - 1, end.month, end.day)    

df_2 = web.DataReader(['AAPL', 'GOOG', 'SNE'], 'yahoo', start_, end_)
print(type(df_2.index))
df_2.head()

AAPLはApple、GOOGはAlphabet(google)、SNEはSonyをセットします。datetimeで、プログラムを実行するdatetimeを取得し、start_ではそこから逆算して取得開始日・期間開始日を取得します。

ピボットで表示されています。

各種株価の終値だけを表示させます。

df_2['Close'].head()

データセットした3社の株価をチェックしてみます。

df_2['Close'].plot(title='AAPL vs GOOG vs SNE', grid=True)

株価の推移はチェックできますが、そもそもの価格が違うので比較がしにくいです。ですので、open、開始価格を揃えて比較してみます。

df_2['Close', 'AAPL'] /= df_2['Close'].loc[df_2.index[0], 'AAPL']
df_2['Close', 'GOOG'] /= df_2['Close'].loc[df_2.index[0], 'GOOG']
df_2['Close', 'SNE'] /= df_2['Close'].loc[df_2.index[0], 'SNE']

df_2['Close'].plot(title='AAPL vs GOOG vs SNE', grid=True)


AAPLの株価の伸びがやばいくらいです・・・こうなるのであれば少しでも購入しておけばよかったなと思います。アルファベットとSonyの株価が逆転してるなど何があったのでしょうか?各社の商材の動きまではチェックしていないのでわからないことだらけなのですが、このような動きが予測できるとお金に困らない人生が送れるのだろうなと思ったデータです。

最後に

今回は、Pythonのライブラリpandas-datareaderで株価を取得するがテーマだったので、まずは取得して表示できるところまでは達成できました。dataframeにも格納できるので、ここから統計分析や予測モデル(目標はアプリ)を作っていこうと思います。私は株よりFX派なのでそのデータの有効活用も行なっていきたいなと。データセットを眺めるだけでなく、やはり株で儲けられるくらいまでの予測精度を出せたら非常にうれしいですし、多分仕事しないです。


なりたい自分になれる
スキルアップならUdemy

私も利用し、高収入エンジニアになったのよ。未経験から機械学習、データサイエンティスト、アプリ開発エンジニアを目指せるコンテンツが多数あります。優秀な講師が多数!割引を利用すれば1,200円〜から動画購入可能です。!

ABOUTこの記事をかいた人

大学卒業して、キラキラしていたのでIT業界にはいりましたが、中身はブラックでした!!だから、投資技術を磨いて早くリタイヤしたいです。株価、Python、機械学習をもうもう勉強中です。経済的自由を手に入れて農家やりたい!