Pythonでデータを取得して米国株チャートをプロット【yfinance(fix_yahoo_finance)】
プログラミングでデータ分析を行う際には,色々な場面で株価などのデータを取得することがほぼ必須となるので,今回は準備のために米国株価のデータを取得してプロットする方法を紹介します.
使用言語はPyhonです.データの取得にはYahoo!ファイナンスからデータを取得できるPythonライブラリ『yfinance(元fix_yahoo_finance)』を用います.

Pythonを動かしたことがある人なら,コピペして実行するだけでできます
Pythonでチャートを取得してプロット
ライブラリのインストール
yfinanceは,以下でインストールできます.
pip install yfinance
エラーが出た場合は,pipをアップデートするなどしましょう.
pip install --upgrade pip
公式ドキュメント:yfinance · PyPI
コード
以下のコードをコピペして実行すればデータが取得され,チャートが表示されます.
import datetime
import yfinance as yf
import matplotlib.pyplot as plt
start = datetime.date(2019,1,1)
end = datetime.date.today()
codelist = ["KO","PG","MSFT"]
data2 = yf.download(codelist, start=start, end=end)["Adj Close"]
print(data2.head().append(data2.tail()))
df_all=(1+data2.pct_change()).cumprod()
print(df_all.head().append(df_all.tail()))
df_all.plot(figsize=(8,6),fontsize=18)
#data2.plot(figsize=(8,6),fontsize=18)
plt.legend(bbox_to_anchor=(0, 1), loc='upper left', borderaxespad=1, fontsize=18)
plt.grid(True)
plt.show()
コードの解説
・各種ライブラリをインポート
import datetime
import yfinance as yf
import matplotlib.pyplot as plt
ここでエラーが出たら,ライブラリのインストールをやり直しましょう.
・取得データの期間を設定
start = datetime.date(2019,1,1)
end = datetime.date.today()
startは,取得データの開始日です.endは,取得データの終了日です.
このコードでは取得データ終了日は実行時点の日付(today)になっていますが,過去の日付までにしたい場合は startと同様にdatetime.date(年,月,日)で指定すればOKです.
・銘柄を設定
codelist = ["KO","PG","MSFT"]
チェッカーで銘柄を設定します.
今回は,私のお気に入り銘柄のコカ・コーラ(KO),P&G(PG),マイクロソフト(MSFT)を選択しました.
・データの取得
data2 = yf.download(codelist, start=start, end=end)["Adj Close"]
print(data2.head().append(data2.tail()))
Yahoo!ファイナンスからデータを取得(data2)します.また,printしてデータを文字で確認しています.
この時点では,データは株価(ドル)です.
・データをパーセント表記に変換
df_all=(1+data2.pct_change()).cumprod()
print(df_all.head().append(df_all.tail()))
先ほど取得した株価データdata2を前日に対する変化率の時系列データに変換し1を加え,さらにその累積積にすることで開始日を1とした倍率にしています.
・プロット
df_all.plot(figsize=(8,6),fontsize=18)
plt.legend(bbox_to_anchor=(0, 1), loc='upper left', borderaxespad=1, fontsize=18)
plt.grid(True)
plt.show()
df_all(倍率表記のチャート)をグラフにプロットして表示します.
倍率表記ではなく株価で表示したい場合は,
df_all.plot(figsize=(8,6),fontsize=18)
を
data2.plot(figsize=(8,6),fontsize=18)
に置き換えればOKです.
実行
python chart_us.py
chart_us.pyの部分はファイル名です.自分で保存したファイル名を入れてください.
実行結果
上のコードを実行すれば,以下のようなグラフが表示されます.横軸が日付,縦軸が開始日を1としたときの株価倍率(倍)です.

KO MSFT PG
Date
2018-12-31 44.38 98.81 86.73
2019-01-02 43.98 98.38 86.12
2019-01-03 43.71 94.76 85.52
2019-01-04 44.58 99.16 87.27
2019-01-07 44.00 99.29 86.92
2021-02-23 50.54 233.27 127.52
2021-02-24 50.71 234.55 127.66
2021-02-25 50.17 228.99 126.58
2021-02-26 48.99 232.38 123.53
2021-03-01 49.90 236.94 124.29
KO MSFT PG
Date
2018-12-31 NaN NaN NaN
2019-01-02 0.990987 0.995648 0.992967
2019-01-03 0.984903 0.959012 0.986049
2019-01-04 1.004507 1.003542 1.006226
2019-01-07 0.991438 1.004858 1.002191
2021-02-23 1.138801 2.360793 1.470310
2021-02-24 1.142632 2.373748 1.471924
2021-02-25 1.130464 2.317478 1.459472
2021-02-26 1.103876 2.351786 1.424305
2021-03-01 1.124380 2.397935 1.433068
・参考記事
20行で資産運用モデル作成 [Python 米国株の株価を取得し、グラフ・チャートを表示]
を参考にさせて頂きました.
参考記事ではGoogle Colaboratoryを用いてブラウザ上でプログラミング,実行していますが,今回は普通にWindowsマシンで行いました.
ディスカッション
コメント一覧
まだ、コメントがありません