Python で株価を取得してグラフにする

JupyterLab または Jupyter Notebook で株価の取得とグラフ化をしてみます。
JupyterLab または Jupyter Notebook の用意はこちらを参照ください。

株価を取得する

株価の取得には、yahooquery 2.2.15 を使います。

from yahooquery import Ticker

ticker = Ticker('7203.T')
df = ticker.history(period='1mo', interval='1d')
  • 3行目: Ticker で、取得したい銘柄のコードを指定します。
    日本の銘柄は ‘7203.T’ の様にコード(7203=トヨタ自動車)と取引所(T=東京証券取引所)をドットで区切って設定します。
  • 4行目: history でデータを取得します。
    period で期間を指定します。’1mo’ は1ヶ月分になります。
    interval で間隔を指定します。’1d’ で1日毎になります。

df に以下の様にデータを取得できます。

ラインチャートにする

ラインチャートは matplotlib を使って書いてみます。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))))
plt.xticks(rotation=45)
plt.plot(df.loc['7203.T'].close)
plt.show()
  • 3−4行目:Y軸の数値を3桁区切りで表示させる
  • 5行目:横軸のラベルを45°に傾ける
  • 6行目:グラフ描画
    引数のデータの指定が df.loc[‘7203.T’].close と分かりづらいですが、中身は以下のようになっています。

グラフにした結果は、

ローソク足チャートにする

ローソク足チャートは mplfinance を使って書いてみます。

import pandas as pd
import mplfinance as mpf

dg = df.loc['7203.T'].copy()

dh = dg.reset_index()
dh.rename(columns=str.capitalize, inplace=True)
dh['Date'] = pd.to_datetime(dh['Date'])

di = dh.reset_index()
di.set_index('Date', inplace=True)
di.drop('Adjclose', axis=1, inplace=True)

mpf.plot(di, type='candle')
mpf.show()
  • 4−12行目:14行目で使う為に、データの変換
  • 14行目:グラフ描画

ほとんどデータ変換に費やしています。変換の前と変換後で見ると、次の通りです。

変換前
変換後
  • 7行目:列名の頭文字を大文字に変換( date → Date )
  • 8行目:日付の列を datetime64 型に変換
  • 10−11行目:インデックスを Date に設定
  • 12行目:不要な列(Adjclose)を削除

グラフにした結果は、

コメント

タイトルとURLをコピーしました