【Python】pandasで日経平均の株価データをスクレイピングする

この記事は約9分で読めます。

 

Pythonで株価データを取得する

 

今回はPythonで日経平均株価を取得していきたいと思います。環境はWin10・Ancondaを使用しています。anaconda?jupyter?という人は以下の記事を参照してください。この2つはpythonでのデータ分析において必須なので、使いこなしておくと作業が非常に捗ります。

 

 

関連記事:【Python】Anacondaのインストールと初期設定から便利な使い方までを徹底解説!

 

関連記事:【Python】Jupyter notebookの基本的な使い方を分かりやすく説明する

 

 

Pandasとは?

 

pandasはJupyter Notebook上で作業するにあたって、データフレームの操作などに欠かせない便利パッケージの1つです。

 

 

関連記事:【Python】Pandasを使ったデータ分析①~特定の行・列のデータを抽出する

 

関連記事:【Python】Pandasを使ったデータ分析②~1次元配列のpd.Seriesを使いこなす

 

 

pandasはデータの操作の他に派生ライブラリのpandas-datareaderを使用することでWeb上の様々なソースに簡単にアクセスし、pandasのDataFrameの形でデータを取得することもできます。

 

例としてpandas-datareaderを使用するとセントルイス準備銀行やワールドバンク・Googleアナリティクスからデータを取得することができます。(2018年2月現在)

 

他にも色んなところのデータベースにアクセスできるので、Pythonを用いて金融系のデータ分析をしたいという方にPandas及びpandas-datareaderは必須のライブラリです。

 

 

Pandas-datareaderのインストール

 

pandasは、コマンドプロンプト(アナコンダプロンプト)でPIPコマンドを入力するとインストールできます。

 

# pandas-datareaderのインストール
$pip install pandas-datareader

 

 

pandasのバージョンが古いとpandas-datareaderがインストール出来ないことがあるらしいので、エラーが出た場合はpandasを最新版にアップデートしてみてください。

 

公式ドキュメント:pandas-datareader公式ドキュメント

 

 

スポンサーリンク
スポンサーリンク

 pandas-datareaderで日経平均株価を取得する

 

日経平均株価のデータを取得するにあたってにオーソドックスな方法は以下の2つです。

 

  • Fredから取得する
  • Yahoo financeから取得する

 

日経平均株価はヤフーファイナンスから取得することもできますが、ヤフーファイナンスはスクレイピング対策で仕様がしょっちゅう変わるので、個人的にはあまりおすすめしません。まあ取得できる場合はヤフーファイナンスでいいでしょう。

 

ここでは一応FRED® (Federal Reserve Economic Data) =フレッド”から、日経平均株価を取得していきます。

 

FREDとは米国に12ある連邦準備銀行のうちのひとつ=セントルイス連邦準備銀行が運営している経済統計データ集で、米国経済に関する21,937の時系列データを自由にダウンロードすることができ、このサイトで主要な経済統計の大部分を入手することが可能です。

 

それには日経平均だけではなく、ダウ平均やAppleやFacebookといったアメリカの大手企業の株価データも含まれています。

 

このFREDでは常にアップデートされた時系列データを入手することができますし、年々データ数が増えているだけでなく、ダウンロードの形式も自由に選択できるようになり、ますます使い勝手が良くなっているのでお勧めです。

 

ただリアルタイムデータはないので、高頻度データの分析などを行いたい場合は自分でスクレイピングのプログラムを組む必要があります。

 

 

<作業環境>

  • Python3.6
  • Windows10
  • JupyterNotebook

 

 

# ライブラリの読み込み
import pandas_datareader.data as web
import pandas as pd
import datetime

# 日経平均株価を取得する
nikkei = web.DataReader("NIKKEI225", "fred", "1950/5/16")

# データをCSV出力する
nikkei.to_csv('nikkei.csv')

#データを確認する
nikkei

 

 

すると↓のような感じでデータを取得できます.Jupyter Notebookは取得したデータフレームに色や線を付けてくれたり無機質ではないので個人的には好みですね。

 

 

 

 

コードの説明をすると、

 

#データを取得する関数 DataReader(name, source, start, end)
<引数>
name : データセット名またはティッカーシンボル
source : 取得元のデータソース名
start : 取得してくる期間の始まり
end : 取得してくる期間の終わり

 

 

データソースは日経平均以外にもいろいろありますが、基本的にFREDにほとんど揃っているので、StartとEndはdatetimeで”〇〇〇〇‐〇〇‐〇〇”という感じで指定していきます。endの方は今回のように特に指定しない場合は最新の日付になります。

 

nameに関してはFREDのサイトで直接検索して使える引数を見つけるといいと思います。→FRED公式サイト

 

他にもFREDには人口やGDPのデータなどが揃っているので、株価だけではなくいろいろな分析ができます。

 

 

ヤフーファイナンスから日経平均を取得する場合

 

# 期間を指定する
start = '2018-4-1'
end = '2019-4-1'

# データをスクレイピングで取得する
nikkei = web.DataReader('^N225', 'yahoo', start, end)

#csvに出力する
nikkei.to_csv("nikkei.csv")

# データを確認する
nikkei

 

 

 

一応Yahooファイナンスから取得する場合だと、始値・高値・低値・終値・出来高全部揃っているので、出来ればこちらから取得したいところ。

 

ただしこれはアメリカのヤフーファイナンスなので、任天堂とかソニーとか向こうに上場していない日本の個別株の株価データはありません。ちなみに引数を^N225からAPPLに変えるとApple、AMZNに変えるとAmazonの株価データが取得できます。

 

 

日経平均の値動きをグラフでプロットする

 

pythonでデータをグラフ化する方法はいくつかありますが、一番手っ取り早いのはmatplotlibです。Pandasは関数からMatplotlibの機能を使ってグラフをプロットする機能があります。

 

 

# nikkei平均株価の価格データをグラフとして描画する
%matplotlib inline
nikkei.plot()

 

 

 

Pandasの関数だと本当に普通のグラフしかプロットできませんが、plt.plot()で書けばグラフにタイトルを付けたり、ラベルを付けたりもっとオシャレにできます。その方法については以下の記事に書いています。

 

 

 

 

(おまけ) ダウ工業平均株価の取得方法

 

ちなみに日経平均株価とよく比較されるアメリカのダウ工業平均株価は以下のように指定することで取得できます。ダウを取得する場合はPandasの引数をNIKKEIからDJIAに変更します。このFREDのname引数はURLの末尾の文字(ここだとDJIA)を参照しています。↓

 

 

 

 

 

# ダウ工業平均株価をPandasで取得する
start = datetime.datetime(2009, 1, 12)
end= datetime.datetime(2019, 1, 13)
dau = web.DataReader('DJIA', 'fred', start=start, end=end)

 

 

終わり

 

 

これでデータ分析のネタになるデータは取得できました。次はこのデータを分析していきます。「個人投資家のためのFinTechプログラミング (日経BPムック)」という本はPythonによる金融データの取得&分析手法が(簡易的ですが)乗っているので、データ分析初学者の方にはオススメです。

 

 

 

 

 

 

関連記事:【Python】pandasでビットコイン価格のローソク足と移動平均線を計算してプロットする

 

関連記事:【Python】pandasのresample()で株価データを月/日/時ごとに再集計

 

関連記事:【Python】CoinGeckoのAPIからビットコイン・アルトコインの価格データを取得する

 

関連記事:【Python】機械学習で株価を予測する~Scikit-Learnの決定木アルゴリズムを使う

 

 

コメント

  1. […] 【Python】pandasで日経平均の株価データをスクレイピングするPythonで株価データを取得する今回はPythonで日経平均株価を取得していきたいと思います。環境はWin10・Ancondaを使用しています […]

タイトルとURLをコピーしました