Pythonの強みの1つにデータ分析があります。
簡単にいうと、Excelでのデータ分析を自動化することができます。
Excelのように図式化できることはもちろん、より大量のデータを分析することができます。
この記事では1つのサンプルとして、実際の株価データを分析してみます。
以下に当てはまる項目がある方は参考になると思います。
・Pythonを利用したデータ分析方法を知りたい
・データ分析のサンプルコードをみてみたい
・データをどうやって見やすくするの?
コードを実行する上での準備から、株価データの取得方法(米国株)を説明します。
データの取得を方法をアレンジしていけば、どんなデータでも自分で考えて分析できるようになります。
実際に取得した3社の株価の相関関係を分析していきます。
最後にデータ分析はもちろん、プログラミングから機械学習とIT技術に関係するオススメの学習プラットフォームを紹介します。
事前準備 -モジュールからデータまで-

この記事で扱うデータは「pandas-datareader」より取得します。
「pandas-datareader」とは株価データや経済データなどを提供しているモジュールです。
詳細はこちらを参照してください。
コマンドラインで以下を実行して「pandas-datareader」を取得してください。
pip install pandas-datareader
まず以下のPythonコードを実行して必要なモジュールを読み込みます。
import numpy as np
from pandas import Series, DataFrame
import pandas as pd
import pandas_datareader.data as web
import datetime
1行目の「NumPy」については『【NumPy入門】機械学習はここから始める|計算方法、配列の作り方、配列の変形』を参考にしてください。
2行目の「Pandas」は『【Pandas入門】機械学習の基礎知識 -効率的な学習法-|調べて実践できる』で解説しているので、参考にしてください。
「Series」「DataFrame」それぞれについて説明しているので、使い方がわからない場合はまず読んでみてください。
株価データの作成
この記事では以下の3社(石油関連)の株価を分析していきます。
・ビーピー ・シェブロン ・エクソンモービル
取得する株価は「2018/1/1〜2020/1/1」のものです。
以下のコードを実行してYahooから取得した3社株価データの「DataFrame」を作成します。
start = datetime.datetime(2018, 1, 1)
end = datetime.datetime(2020, 1, 1)
df = web.DataReader(['BP','CVX','XOM'], 'yahoo', start, end)['Adj Close']
最後の”Adj Close"
は終値を取得するためのものです。
株価データの確認から分析まで

株価データの確認しながら、表や図で表示してみます。
最終的には3社の株価がどのように関係しているのか分析してみましょう。
データを見る
まずは以下のコードを実行して取得した株価データを表で表示してみます。
df.head()
このような表ができあがります。

「DataFrame」は”head関数”を使用することで、上から3つのデータを取得できます。
それでも数字ばかりで、どういった動きがしているかわかりづらいですね。。。
そこでグラフ化してみます。
import matplotlib.pyplot as plt
df.plot()
plt.legend(loc = 'upper right')
plt.show()
実行すると以下のグラフが取得できます。
3社の毎日の株価が2年分動きがわかるようになりました。

パッと見ると、「CVX」と「XOM」の動きが似ている気がします。
ここではPythonのグラフ化するモジュール「matplotlib」を利用しています。
”legend関数”を使用することで、右上のような凡例を表示しています。
各社の株価の変化を数値化する
各社の株価が毎日どれほど変化したのかを数値化してみます。
変化値を取得するには”pct_change関数”を利用します。
ret = df.pct_change()
ret.head()
変化値の表ができあがりました。

前日からどの程度、変化があったのか計算しているため、一番上の行(初日)のデータは「NaN」となります。
Pythonの「NaN」は「None」とは違うので、注意してください。
詳細は『【Python必須知識】初心者がつまづくNaNについて|Noneとの違い、扱い方紹介』にまとめています。
せっかくなので、この変化値もグラフ化してみます。

なんだこれ、、、よくわからんです。。。
もう少しわかりやすい見方に変えていきましょう。
3社株価データの相関関係
視点を変えて、3社の株価データの連動性をみていきます。
相関関係をみるときは”corrt関数”を利用します。
相関を意味する「コリレーション」の略になります。
ret.corr()
相関関係の表はこのようになりました。

数値が「1」に近いほうが、似た動きをしていることになります。
もっとわかりやすく、図にしてみましょう。
ここでは「seaborn」を使用します。
matplotlibの上位互換のようなものになります。
以下をコマンドラインで実行してインストールしておきましょう。
pip install seaborn
インストールできたら、以下のPythonコードを実行して図を作成してください。
import seaborn as sns
sns.heatmap(ret.corr(), cmap="Blues")
plt.show()
こちらの図ができあがります。

色が濃いほど、似た動きをしていることを表す図になります。
やはり、「CVX」と「XOM」の動きに関連性があることがわかります。
これより、「CVX」と「XOM」の動きに違いがみえたときにチャンスが生まれることが予測できます。
効率的な学習方法を紹介
Pythonやデータ分析に限らず、IT技術を勉強するには最適な方法があります。
始めたばかりの人は日本教育のように「関数を覚えよう!」となりがちです。
技術書で勉強しようと思っても細かい関数の紹介ばかりです。。。
しかし、本当に必要なことは、「おおよそを理解して、細かいことは都度調べながら実装していく」です!
おおよそを理解できたら、「こんなことできるかな、これができる関数ありそう」などと予測ができるようになります。
しかし、おおよそを理解することがムズカシイです。
なにから始めたらよいのか、わからないですし、費用も高いです。。。
そこでオススメなのが、『Udemy 』です。
10万以上ものオンライン講座があります。
いつでも、どこでも受講することができるので、出勤中などにぼぉーっとみて、概要を把握することができます。
さらに現在、最大95%OFFとなっており、1,000円代で購入することができます!
安くなっているうちに、試しに受講してみるとよいと思います。
自分の望んでいるスキルについて検索してみてください。
最後に
実際にデータ分析ができるようになると、日常の生活がガラッと変わります。
いろいろなデータを取得して分析してみたくなり、どういったデータが集められるのか考えるようになります。
そうやった実際にいろいろなデータで分析を重ねていくうちに、それらのデータが自分の資産となり、人生を豊かにしていくことができるでしょう。
そのためにも、ちゃんとした内容を効率的に学ぶことを意識してください。
最後まで読んでくださり、ありがとうございました!!!
コメント