Pythonコード集 マーケット分析の記事

【Pythonコード集】1月10日の記事:パフォーマンスデータの取得とバーチャートの描画

ー 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回の記事を配信します。

最後までお読みいただき、ありがとうございました!


注記事項

ジェイの米国株投資ブログ(以下当サイト)に掲載されている記事は、投資の助言を目的としたものではありません。当サイトに掲載されたコンテンツの正確性については、可能な限り注意を払っています。しかし、意図せず誤情報が紛れ込む可能性や情報そのものが古くなっている可能性があり、その正確性を完全に保証するものではありません。
当サイトのコンテンツを参考に投資を行い、その後発生したいかなる結果についても、当サイト並びにブログ運営者は一切責任を負いません。すべての投資行動は『自己責任の原則』のもとで行ってください

 

-Pythonコード集, マーケット分析の記事