【Python】Pandasで日経平均とダウ工業平均を株価データを取得する方法

スポンサーリンク

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

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

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

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

Pandasとは?

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

pandasはデータの操作の他にもWeb上の様々なソースに簡単にアクセスし、pandasのDataFrameの形でデータを取得することもできます。例としてpandasを使用するとセントルイス準備銀行やワールドバンク・Googleアナリティクスからデータを取得することができます。(2018年2月現在)

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

Pandasのインストール

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

f:id:oruka199665:20180222032441j:plain

今まではこれでヤフーファイナンスみたいなデータベースからデータをダウンロードできたのですが、現在pandasのデータ収集部分の機能はpandas-datareaderとして独立しているので、pandasとは別にpandas-datareaderをPIPコマンドでインストールする必要があります。

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

#pandas-datareaderをインストールする
pip install pandas-datareader

 日経平均株価を取得する

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

なので、ここでは日経平均株価を取得する際には“FRED® (Federal Reserve Economic Data) =フレッド”を使います。

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

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

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

#ライブラリのインストール
import pandas_datareader.data as web
import datetime

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

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

コードの説明をすると、

#データを取得する関数
DataReader(name,source,start,end)

name : データセット名またはティッカーシンボル
source : 取得元のデータソース名
start : 取得してくる期間の始まり
end : 取得してくる期間の終わり

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

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

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

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

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

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

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

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

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

#ダウ工業平均株価をPandasで取得する

dau = web.DataReader('DJIA',
'fred',
start=datetime.datetime(2009,1,12),
end=datetime.datetime(2019,1,13))

スポンサーリンク

終わり

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

プログラミングを挫折せず最短で習得する方法


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上にあたってはもはや出来て当たり前のスキルとなりつつあります。こういう話はテレビや雑誌でも最近増えてきたので、知らない人はいないでしょう。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。



それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」「エンジニアとして若いうちから高収入を得たい」という気持ちから一念発起して侍エンジニアのwebサービスコースに申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解できました。


侍エンジニアでは様々なコースが用意されており、HTML・cssなどでWebサイトやWebアプリを作ってみたい人からPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズにこたえています。


IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習まで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけてみましょう。ちなみに今「侍エンジニア」の無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。







自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする