ー 3分で読める記事 ー
今回は、Pythonコードを紹介する記事となります。
Pythonを学びたいと思っている人や興味のある人向けの内容となります。
また、記事の最後の方では、Pythonを効率的に学ぶ方法やおすすめのUdemyコースも紹介しています。
お時間のある時にご覧ください!
Udemy おすすめのPythonコース
・Pythonの基礎から応用まで一気に学ぶならこのコース おすすめ度
▶現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
まったくの初心者の方にはこのコースがおすすめ。Pythonの基礎を体系的に学ことができます。
・Python、ファイナンス、英語を一気に学ぶ ”欲張りコース” おすすめ度
▶Python for Finance: Investment Fundamentals & Data Analytics
このコースには日本語の字幕がついています。
Python、ファイナンスそして英語の力を同時にレベルアップするコースとしては、Udemy最強のコースです。
ジェイもこのコースで学び、今も復習で使っています。
・データサイエンスを学ぶならこの2コース おすすめ度
▶【世界で37万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜
▶【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門
現状、データ分析にプログラミング言語を活用するならPython一択です。Pythonの基礎を学んだ後は、上2つのコースにチャレンジすることをおすすめします。
この記事で学べること
学べること
- Yahoo!finance USからデータを取得する方法
- Pandasの操作ーカラム名の変更やデータの並び替え
- バーチャート(某ブラフ)を描画する方法
- 特定のバー(棒)の色を変える方法
今回の記事の対象者
こんな方におすすめ
- Pythonに興味がある人
- Pythonを勉強をしたい人
- Pythonで株価の分析をしたい人
今回のPythonコード
今回のコード
2022年1月10日の記事で載せたパフォーマンスの数値データとバーチャート(棒グラフ)を描画するPythonコード
上の記事を未読の方は、以下のリンク先からご覧ください。
-
-
【2022年の投資戦略シリーズ 第1回】米国株はオミクロン後をにらんだ展開に
続きを見る
Pythonコードの紹介
では、さっそくPythonコードを紹介します。
全体のコード
まずは全体のコードから。
コードの画像は、左右にスクロール / スワイプできます。
#ライブラリのインポート import pandas as pd import yfinance as yf import matplotlib.pyplot as plt import seaborn as sns #Yahoo!finance USから株価データを取得 markets = ['^GSPC', 'CCL', 'RCL', 'DAL', 'LUV', 'EXPE', 'BKNG'] df = pd.DataFrame() for i in markets: df[i] = yf.download(tickers=i, start='2021-12-01', auto_adjust=True)['Close'] #カラム名を変更 df.columns = ('SPX500', 'Carnival', 'Royal_Caribbean', 'Delta', 'South_West', 'Expedia', 'Booking_HLD') #取得したデータ情報の確認 print( df.head()) print(df.tail()) print(df.describe()) #2021年12月のパフォーマンスを計算 performance_data = (df/df.iloc[0]-1)*100 #パフォーマンスデータを降順に並び替え performance_rank = round(performance_data.iloc[-1].sort_values(ascending = False), ndigits=2) #パフォーマンスデータの確認 print(performance_rank) #チャート(視覚)でもパフォーマンスデータの確認 fig, ax = plt.subplots(figsize = (15,7)) chart = ax.bar(performance_rank.index, height = performance_rank, color = 'green') chart[-1].set_color('red') plt.ylabel('Performance(%)', fontsize = 20) plt.xlabel('Markets', fontsize = 20) plt.grid(True)
なお、データの最終取得日が最新の終値となるようコードを書いているので、コードの実行日によってパフォーマンスの値が異なります。
コードの流れ:パフォーマンスデータ
ここからは、具体的なコードの流れについて解説します。
まずは、株価データの取得からパフォーマンスの計算までのコードをみてみましょう。
1:ライブラリのインポート
いつも通りライブラリのインポートからです。
#ライブラリのインポート import pandas as pd import yfinance as yf import matplotlib.pyplot as plt import seaborn as sns
ー解説ー
▷import pandas as pd
Python版のエクセルである『Pandas』をインポート。
後のコードを簡単にするために『pd』で簡略。
▷import yfinance as yf
Yahoo!finance USから株価のデータを取得する時によく使うライブラリのひとつが『yfinance』です。
後のコードを簡単にするために『yf』で簡略。
yfinanceの他には、『pandas_datareader』という便利なライブラリもあります。
▷import matplotlib.pyplot as plt
Pythonのチャート描画ライブラリのひとつが『matplotlib』。
『import matplotlib.pyplot as plt』は、定型文として覚えておくと良いでしょう。
後のコードを簡単にするために『plt』で簡略。
▷import seaborn as sns
『seaborn』は、matplotlibのデザインをカッコよく装飾したい時に使います。
matplotlibだけでも視覚チャートやグラフは作れます。
なので、seabornを使うかどうかは目的や好みによります。
2:株価データの取得
ライブラリのインポートが終わったら、次はYahoo!finance USから株価のデータを取得します。
#Yahoo!finance USから株価データを取得 markets = ['^GSPC', 'CCL', 'RCL', 'DAL', 'LUV', 'EXPE', 'BKNG'] df = pd.DataFrame() for i in markets: df[i] = yf.download(tickers=i, start='2021-12-01', auto_adjust=True)['Close']
ー解説ー
▷markets = ['^GSPC', 'CCL', 'RCL', 'DAL', 'LUV', 'EXPE', 'BKNG']
今回取得したい企業のティッカーコードをリスト形式でまとめておきます。
こうすることで、ひとつひとつの株価データを取得することなく、for文で一気に取得することができます。
今回の株式ティッカー
・^GSPC:S&P500
・CCL:カーニバル
・RCL:ロイヤルカリビアン
・DAL:デルタ航空
・LUV:サウスウェスト航空
・EXPE:エクペディア
・BKNG:ブッキングホールディングス
▷df = pd.DataFrame()
for文のコードを書く前に、『 pd.DataFrame()』で空のデータフレームを作成します。
設定した空のデータフレームを変数『df』に入れます。変数名はお好みでOK。
こうすることで、空の『df』(データフレーム)に、『markets』(リスト形式のティッカー)の株価データをfor文で順繰りに取得することができます。
▷for t in markets:
いよいよfor文です。
”基本の型” は以下となります。
for文の型
for カウンタ変数 in オブジェクト: 実行する処理
オブジェクトは、取得したいデータの変数となります。
今回は株式ティッカーのリスト『markets』がそれにあたります。
カウンタ変数は、オブジェクト変数をひとつひとつ認識していく変数です。
このようなコード(for文)を書くことで、『markets』のデータを時系列にそって、ひとつひとつ取得していくことができます。
さて、最後は ”実行する処理” です。
▷yf.download(...)
Yahoo!finance USから株価データを取得するためのライブラリ『yf (yfinance) 』の後ろに『.download』とすることで、簡単に時系列の株価データが取得できます。
ポイントは、downloadの引数です。
引数
- tickers:取得したい株式ティッカーを設定
- start:最初のデータ取得日を指定
- auto_adjust:調整後の終値を取得
他にも、最後のデータ取得日を設定する『end』やデータの時間軸(日足、週足など)を設定できる『interval』があります。
実行する処理コードの最後に['Close']とあります。
このコードは、『終値(Close)のデータのみを取得して』という意味です。
一連のコードを書き終えたらすべてのデータを格納するための変数『df[i]』に入れます。
空の『df』にカウンタ変数の[i]を付けることで、データフレームとしてすべての株価データが変数に格納できます。
3:カラム名の編集
for文で取得した株価データのカラムを編集します。
df.columns = ('SPX500', 'Carnival', 'Royal_Caribbean', 'Delta', 'South_West', 'Expedia', 'Booking_HLD')
ー解説ー
▷df.columns = ...
『変数名.columns = 』とし、カッコの中にマーケットや銘柄の名前を設定するだけです。
文字列なので必ず『' '』か『" "』で文字をくくってください。
4:データの確認
データ分析では、ちゃんとデータが取得出来ているかどうか?を確認することがとても重要です。
確認の方法は色々ありますが、今回はシンプルに最初と最後のデータがちゃんと取得できているかどうか?そして統計的なデータ(平均値や標準偏差)の中身を確認しました。
print( df.head()) print(df.tail()) print(df.describe())
ーコードの実行ー
5:パフォーマンスの計算
『ライブラリのインポート→株価データの取得→カラム名の編集→データの確認』という一連の基本的なコードを書き終えたら、次は今回の目的である株価パフォーマンスの計算です。
#2021年12月のパフォーマンスを計算 performance_data = (df/df.iloc[0]-1)*100
ー解説ー
▷(df/df.iloc[0]-1)*100
最初のデータ取得日を基準日として、パフォーマンスを計算するコードです。
ilocについて
Pandasには任意のデータをピックアップするコードがあります。
『.iloc』はその一つで、単独および複数の要素の値を選択 / 取得できます。
分母のdf.iloc[0]は、最初のデータだけを取り出すコードです。
下の画像を見てください。
ーコードの実行ー
カギカッコの中をゼロにすることで、最初のパフォーマンスデータである『0』のみを取り出していることがわかります。
こうすることで、分子のデータが変わっても分母のデータは最初のデータの値(0)で固定されるので、『基準日=ゼロ%』として時系列のパフォーマンスが計算できる、というわけです。
なお、今回の基準日は『2021年11月30日』です。
この日をゼロをすることで、昨年12月以降の株価パフォーマンスを計算できるというわけです。
上の計算式(コード)を書いたら、次に算数の計算をするだけです。
ilocで計算した値から『-1』を引き算し、最後に『100』を掛ける(*)ことで、パーセンテージ表記のパフォーマンス値が表示されます。
ーコードの実行ー
うまい具合に株価パフォーマンスのデータが取得できました。
6:パフォーマンスの並び替え(降順)
今回計算したのはパフォーマンスの値です。
なので、並び替えて分かりやすく表記してみましょう。
#パフォーマンスデータを降順に並び替え performance_rank = round(performance_data.iloc[-1].sort_values(ascending = False), ndigits=2) #パフォーマンスデータの確認 print(performance_rank)
ー解説ー
▷sort_values(ascending = False)
『sort_values』は、データの並び替えでよく使われるコードです。
ポイントは『ascending』です。
ascending
- True:昇順で並び替え
- False:降順で並び替え
▷round(..., ndigits=2)
『round』は、小数点以下の値の数を決める際に使うコードです。
表記したい値の全体コードを必ずカッコでくくってください。
変数『ndigits』で、表記したい小数点以下の値を決めます。
今回は『2』としたのたので、小数点2位までの値を表記しています。
▷print(performance_rank)
最後にパフォーマンスデータの値を確認します。
ーコードの実行ー
一番のパフォーマンスが良好なカーニバル(CCL)から順番(降順)に、パフォーマンスの値が表示されていることがわかります。
コードの流れ:チャートの描画
データ分析で重要なこと
株価の分析に限らずデータ分析全般では、以下のことがとても重要です。
重要なこと
数値のデータを必ず視覚でも確認する
なので、この記事の最後のテーマとなるバーチャート(棒グラフ)をPythonで描画してみましょう!
7:バーチャートの描画
#チャート(視覚)でもパフォーマンスデータの確認 fig, ax = plt.subplots(figsize = (15,7)) chart = ax.bar(performance_rank.index, height = performance_rank, color = 'green') chart[-1].set_color('red') plt.ylabel('Performance(%)', fontsize = 20) plt.xlabel('Markets', fontsize = 20) plt.grid(True)
ー解説ー
▷fig, ax = plt.subplots(figsize = (15,7))
Pythonのチャート描画ライブラリ『plt (matplotlib)』の後ろに『subplots』を付けることで、チャートの大枠を設定できます。
今回は、引数にチャートの大きさを設定する『figsize』を設定しました。
『15, 7』とは、『横15 / 縦7』の横長チャートを作成して、という意味です。
▷ax.bar(...)
上で設定したチャートの大枠の変数に『ax』があります。
axの後ろにバーチャート(棒グラフ)を描画する『.bar』を付けてください。
その後、以下の引数を設定します。
引数
- x:x軸の設定
- height:棒グラフで表したいデータの設定
- color:棒グラフの色の設定
最初の『x』は書かなくても大丈夫です。
今回表示したいパフォーマンスのデータを『height』に設定してください。
『color』は、あなたのお好みの色でOK!
▷chart[-1].set_color('red')
部分的に棒グラフの色を変える場合は、上のコードを使います。
『-1』と付け加えることで、データフレームの一番最後のデータをピックアップできます。
よって、降順で並び替えられている『chart[-1]』は、一番パフォーマンスの低い銘柄をピックアップして、というコードになります。
今回の株価データで一番パフォーマンスが低いのは『S&P500』となります。
最後に『.set_color(...)』を付けることで、ターゲットとなる棒グラフの色が編集できます。
カッコの中にお好みの色を設定してください。
今回は、赤(red)としました。
あとは、ちょっとした仕上げです。
▷plt.ylabel('Performance(%)', fontsize = 20)
y軸のタイトルを設定するコード。
タイトルと『fontsize』で文字の大きさを設定できます。
▷plt.xlabel('Markets', fontsize = 20)
x軸のタイトルを設定するコード。
タイトルと『fontsize』で文字の大きさを設定できます。
▷plt.grid(True)
チャート内のグリッドライン(縦と横のライン)を表記するコード。
『False』とすることで、グリッドラインを消すこともできます。
さて、ここまで書いたコードを実行してみましょう。
ーコードの実行ー
見事に降順に並び替えられた株価のパフォーマンスデータがバーチャート(棒グラフ)で描画できました!
一番右はしの『S&P500』の色も、しっかりと赤になっていることがわかります。
このように一度コードを書いてしまえば、あとは銘柄や期間を変更するだけで、あなたが知りたい銘柄の株価パフォーマンスを簡単にチェックすることができます。
Pythonを学びたいと思っているあなたへ
Pythonって便利だな!
私もPythonを学んでみたい!
今回の記事を読んでそう思われた方は、以下のリンク先をご覧ください。
▼ 本気でPythonを学びたいなら ▼
Pythonを学ぼう
Pythonを学ぶメリットがわかります。
そして、『これがPythonを効率的に学ぶ方法だ!』と自信をもっておすすめする学習方法について解説しています。
この記事と出会ったのも何かの縁です。
ぜひチャレンジしてみてください!
最後に、ジェイがお勧めするUdemyのPythonコースをご紹介します。
すべてジェイが実際に受講したコースです。
興味のある方は、リンク先からコースの内容をご確認ください。
Udemy おすすめのPythonコース
・Pythonの基礎から応用まで一気に学ぶならこのコース おすすめ度
▶現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
まったくの初心者の方にはこのコースがおすすめ。Pythonの基礎を体系的に学ことができます。
・Python、ファイナンス、英語を一気に学ぶ ”欲張りコース” おすすめ度
▶Python for Finance: Investment Fundamentals & Data Analytics
このコースには日本語の字幕がついています。
Python、ファイナンスそして英語の力を同時にレベルアップするコースとしては、Udemy最強のコースです。
ジェイもこのコースで学び、今も復習で使っています。
・データサイエンスを学ぶならこの2コース おすすめ度
▶【世界で37万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜
▶【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門
現状、データ分析にプログラミング言語を活用するならPython一択です。Pythonの基礎を学んだ後は、上2つのコースにチャレンジすることをおすすめします。
今回のまとめ
まとめ
・Pythonを使えば、簡単に株価データの取得ができる
・Pythonを使えば、簡単に株価のパフォーマンスが計算できる
・Pythonを使えば、簡単にデータの並び替えができる
・Pythonを使えば、簡単にチャートの描画ができる
・Pythonを効率的に学ぶ方法について
今回は以上です。
次回は、『2022年の投資戦略シリーズ』 第2回の記事を配信します。
最後までお読みいただき、ありがとうございました!
注記事項
当サイトのコンテンツを参考に投資を行い、その後発生したいかなる結果についても、当サイト並びにブログ運営者は一切責任を負いません。すべての投資行動は『自己責任の原則』のもとで行ってください。