Fire Engine

消防士→ITエンジニア→研究者

Pythonで株価データを取得し、Matplotlibで可視化する。

はじめに

 株価データは、代表的な時系列データの一つですが、Pythonはこの時系列データを取り扱うのを非常に得意としています。特に、Pythonライブラリの一つであるpandasはもともと金融データを扱うために開発されたため、時系列データの分析に強力な機能を数多く備えています。

 今回やることは非常にシンプルで、下記の2点だけです。(すべてIPython Notebook上で行っています。)

 1. Google Financeからトヨタの株価データを取得する。

 2. 取得した株価データを時系列データとしてプロットする。

株価データの取得

 まず始めに、下記のように必要となるライブラリをインポートします。

import pandas as pd
from pandas import Series, DataFrame
import numpy as np

import matplotlib.pyplot as plt
%matplotlib inline

 最後の1行は、描画するグラフをIPython Notebook上にそのまま埋め込むために書いたものです。

 pandasの標準機能であるDataReaderを使えばYahooやGoogleなどから簡単に株価を取得できます。

#from pandas.io.data import DataReader
from pandas_datareader.data import DataReader #モジュールが変わったため変更
from datetime import datetime

end = datetime.now()
start = datetime(end.year - 1, end.month, end.day)
toyota = DataReader('TM', 'google', start, end)

toyota.head()


f:id:hirotsuru314:20170527100205p:plain

 ここで、注意してもらいたいのが、今回Google Financeから取得したデータは、東京証券取引所のものではなく、ニューヨーク証券取引所つまりアメリカの株式市場の情報です。今回はより簡単に株式データを取得するため、Google Finance が提供しているAPIを使いました。(実際に、日本の株式市場のデータを取得するためには、少し手間はかかりますが、スクレイビングでできます。)

 上記のコードでendとstartはいつからいつまでのデータを取得するかを決めています。endをnow(現在)として、startを現在から1年前までとしています。つまり1年分の株価データを取得しています。取得したデータは"toyota"に格納しており、表のようなデータが入っていることがわかると思います。ここで最後の行のheadは、データのうち5行分だけを表示するために書いたものです。

株価データの可視化

 MatplotlibはPythonでグラフを描画するときに非常に便利なライブラリです。今回プロットに使うデータは、上の表でCloseのカラムのデータです。
 次のように1行書くだけで簡単に株価を時系列データとして描くことができます。

toyota['Close'].plot(legend=True, grid=True)

f:id:hirotsuru314:20170527095926p:plain

おわりに

 今回は、Pythonを用いて株価データの取得とその可視化という非常にシンプルな作業を行いました。現在、Pythonは金融・経済データの実践的な分析ツールとして絶大な力を持っており、非常に注目されています。Pythonによるデータ分析を極めていくと、人工知能を使って、システムトレードで大儲け、なんてこともできるかもしれませんね。次回は、複数の企業の株価を比較し、その相関関係を分析するといった過程を書きたいと思います。

 ちなみに、Pythonでデータ分析をするならオライリーの下の書籍が一番いいです。NumPyやpandasを使ったデータ分析がかなり詳しく解説されています。特に今回のような時系列データを取り扱うノウハウは網羅されており、他に同じような書籍は見当たらないため、Pythonでデータ分析をやりたい人にとってはほぼ一択と言っていいと思います。

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理