目安:この記事は3分で読めます
いよいよ『米エネルギー株と原油価格の相関分析シリーズ』の後編となりました。
後編では、Pythonを使えば過去2回の記事でとり上げた相関チャートが簡単につくれる、ということについて解説します。
はじめは一気にPythonコードを紹介したいと考えていました。
しかし、記事を書いているうちにかなり長くなってしまったので、後編は二回に分けて解説します。
今回は、ヒートマップの相関チャートについてです。
今回のテーマ
プログラミング言語 ”Python” を使ってヒートマップの相関チャートを作成する方法
まだ、前編と中編を読んでいないという方は、以下のリンク先からご覧ください。
前編
-
【Python】米エネルギー株と原油価格の相関関係を分析してみよう 前編
続きを見る
中編
-
【Python】米エネルギー株と原油価格の相関関係を分析してみよう 中編
続きを見る
Pythonを効率的に学ぶ方法を知りたいなら以下をクリック ▼
プログラミングを学ぼう
この記事の対象となる人
こんな人におすすめ
- Pythonに興味がある人
- Pythonを学びたいと思っている人
- Pythonを使って株価の分析をしたい人
結論からいいます
結論
- ”matplotlib” と "seaborn" を使えば簡単にチャートがつくれる
Pythonでヒートマップを作成
さて、さっそく本題です。
今回は、前編で作った ”ヒートマップ” のチャートを作成するコードをご紹介します。
コードの手順
まずは、ザっとコードの手順を確認しましょう。
step.1
ライブラリのインポート
step.2
Yahoo!finance から価格データを取得
step.3
価格データの編集
step.4
チャートの作成
となります。
Step1 ライブラリのインポート
Pythonのプログラミングでは、最初に必要なライブラリをインポートすることから始まります。
ライブラリとは、簡単に言えば以下のことです。
よく使う複数のプログラムをひとつにまとめたファイル
Pythonの代表的なライブラリは『Pandas』や『matplotlib』です。
今回もこれら2つのライブラリを使いまくります。
実際に見てみましょう!
・Pythonコード
#pandasを"pd"というかたちでインポート import pandas as pd #pandas_datareaderを"web"というかたちでインポート import pandas_datareader as web #matplotlibを"plt"というかたちでインポート import matplotlib.pyplot as plt #matplotlibから"rcParams"をインポート from matplotlib import rcParams %matplotlib inline #seaborn を"sns"というかたちでインポート import seaborn as sns #seabornのフォントサイズを設定 sns.set(font_scale=1.5) #seabornのチャートスタイルを設定 sns.set_style('whitegrid') #日付の設定を行うライブラリをインポート import datetime
プログラミングのコードは、見慣れていないと『???』になってしまいます。
しかし、難しく考える必要はありません。
上のコードは、以下の機能を持つライブラリを使うためにインポートしただけです。
コードの説明
・pandasは ”Python版のエクセル” です。Pythonの分析では必須のライブラリ
・pandas_datareaderは価格データを取得するためのライブラリ
・matplotlibはPythonでチャートやグラフを作成するための必須ライブラリ
・matplotlibの『rcParams』はチャートやグラフのスタイルを決めるためのライブラリ
・seaborn はmatplotlibを ”カッコよくする” ためのライブラリ
ザっと、以上のことを頭の中に入れておけば大丈夫です!
Step2 価格の取得
ライブラリのインポートが終わったら、次はいよいよ価格データの取得です。
・Pythonコード
# "tickers" という変数に取得したい原油と米エネルギー株のティッカーコードを入れる tickers = ['CL=F','XOM','OXY','CVX','DVN'] # "df" という変数に空の価格データを入力するためのフレームを作成 df = pd.DataFrame() # for文でdf(空のデータフレーム)の中に、tickersで指定した原油と米エネルギー株の価格データを入れていく for i in tickers: df[i] = web.DataReader(name=i, data_source='yahoo', start='2021-01-01', end=datetime.datetime.today())['Adj Close'] # 変数.columnsでカラム名を変更 # 今回は原油のみを ”NY_WTI” に変更 df.columns = ('NY_WTI','XOM','OXY','CVX','DVN')
コードの説明です。
コードの説明:変数
・tickers という変数を作りました。変数はデータを入れておく単なる箱です。なので変数の名前は自由に決めてOKです!
・tickersには複数の価格データを入れます。その場合は[]でくくります。これを ”リスト形式” といいます
コードの説明:df
・dfは、DataFrame(データフレーム)の略です。変数ですので名前は自由に決めてOK!
・”pd” が最初にインポートしたpandasのことです
・"pd.DataFrame()" と書くことでPython版エクセルが作れます
上で書いたコードは、Pythonの定型文と考えておけば大丈夫です。
定型文なので、コードを書いていくうちに慣れていきます。
さて、ここで価格データが取得できているかどうか?を確認をしてみましょう。
・Pythonコード
# 最初の5つと最後の5つを表示する df.head(),df.tail()
※前回の記事をアップしたのが、5月10日。今回の記事をアップしたのが5月14日です。このため原油価格のデータが14日まで、米エネルギー株の株価が13日のNY終値まで取得されています。
次はコードの説明です。
コードの説明:head & tail
・head()は先頭から5つのデータを表示するコード
・tail()は最後から5つのデータを表示するコード
ちゃんと価格データが取得されているかどうか?を確認するとき、全部のデータを確認することは時間の無駄です。
なので、一般的には最初と最後の箇所を確認します。
問題なくデータが取得出来ていれば、次に進みます。
Step3 価格データの編集
次は、価格データの編集です。
相関分析をするときは、そのまま価格データを使うのではなく”編集”をすることをおすすめします。
では、どんな編集をするのか?
それはー
日ごとの変動幅を計算する
ことです。
簡単に言えば、前の日と比べて今日はどのくらい価格が上昇したのか?下落したのか?を見ましょう、ということです。
価格差のことを『差分』といいます。
差分は、引き算をするだけで簡単に計算ができます。
しかしジェイは、”収益率”を重視しています。なので、単に引き算するのではなくー
対数差分
を計算して分析しています。
対数差分... 難しい言葉が出てきましたね。
対数差分を簡単に言うと、投資に使ったお金に対して今はいくらの損益がでているのか?を確認するための数字です。
言葉は難しくても、NumPyを使えば簡単に計算ができます。
早速コードをみてみましょう!
・Pythonコード
# np.log()が対数差分を計算するコード df_log = np.log(df) # diff()が引き算(差分を計算)するコード df_diff = df_log.diff(1) # dropnaはデータが空欄のところを削除するコード df_diff.dropna(inplace=True)
次はコードの説明です。
対数の計算
・対数の計算は”np.log(df)”で簡単にできます。対数にしたいデータフレームをカッコの中に入れるだけです。今回のデータフレームは ”df” となります。
対数差分の計算
・対数差分の計算は”変数.diff( )”で簡単にできます。カッコの中の数字の分だけ差分されます。今回は”1”を入れているので、前日と当日の1日分の価格差を計算しています。
データがないところを削除
・差分を取ると最初のデータフレームは空欄となります。データがないところは通常 ”dropna( )” で削除します。カッコの中に ”inplace=True” と入力すると、削除された状態ですぐに保存できます。
最後に対数差分の価格データを確認してみましょう。
# 最初の5つと最後の5つを表示する df_diff.head(),df_diff.tail()
ちゃんと計算できていることが確認できました。
Step4:チャートの作成
さて、最後はいよいよチャートの作成です。
早速コードからみてみましょう!
・Pythonコード
# plt.figure(figsize=())でチャートのサイズを決める plt.figure(figsize=(15,9)) # sns.heatmapでヒートマップのチャートをつくる sns.heatmap(data = df_diff.corr(),annot=True,cmap='Blues');
コードの説明です。
チャートのサイズを決める
・plt.figure(figsize=( ))は、チャートのサイズを決める定型文です。figsizeのカッコの中で ”横、縦” のサイズを数字で決めます。今回は横を15、縦を9とする横長のサイズとしました。
チャートの作成
・sns.heatmap( )は、ヒートマップのチャートを作るときの定型文です。"data" に相関関係を計算したいデータフレームを入れるだけでヒートマップのチャートが完成します。
"annot=True" とすれば相関係数が表示されます。また、cmap='Blues'ではチャートのグラデーションを決めることができます。今回は青のグラデーションを選びました。
結果をみてみましょう。
簡単にヒートマップの相関チャートができました!
Pythonを使えば簡単にチャートが作成できる
このようにPython、matplotlib、seabornを使えば、簡単にチャートが作成できます。
もちろん、コードを組む時はある程度の時間が必要です。
しかし、一度コードを組んでしまえばあとはそのコードを実行するだけで、一瞬であなたが作りたいチャートが完成します。
この記事をきっかけにPythonに興味を持たれた方は、以下の『Pythonを学びたい方へ』をご覧ください。
ジェイが自信を持っておすすめする『Pythonを効率的に学習する方法』をお教えします!
Pythonを学びたい方へ
今やPythonは、マーケットの分析に限らず、あらゆる分野で使われているプログラミング言語です。
事実、今回の記事でもPythonのプログラミングで最も使われる『matplotlib』と『seaborn』を用いて、相関チャートを作成しました。
Pythonを学んでおけば株式の投資に役立つだけでなく、これからのキャリアを形成する上でも力強い武器となるでしょう。
『私もPythonを学んでみたい!』
という人は以下のリンク先をご覧ください。
Pythonを効率的に学ぶ方法を知りたいなら以下をクリック ▼
プログラミングを学ぼう
なぜプログラミングを学ぶ必要があるのか?その理由がわかります。
そして、ジェイが四苦八苦しながら『これがPythonを効率的に学ぶ方法だ!』と自信をもっておすすめする学習方法について解説しています。
この記事と出会ったのも何かの縁です。
ぜひチャレンジしてみてください!
まとめ
・Pandasを使えば簡単に価格データが取得できる
・NumPyを使えば色んな計算が楽にできる
・matplotlibとseabornを使えば相関チャートが簡単に作れる
次回は線形チャートのPythonコードについて解説します。
こうご期待!
注記事項
当サイトのコンテンツを参考に投資を行い、その後発生したいかなる結果についても、当サイト並びにブログ運営者は一切責任を負いません。すべての投資行動は『自己責任の原則』のもとで行ってください。