日経平均の月足データをPandasのDataframeにする
Monthlyのパフォーマンスを日経と比較して見たい時や指標と日経の相関見てみたいなという時に月次の225のデータがあると何かと便利です。
どこかのサイトでデータ用意してくれないかなと調べていたところ、ありがたいことに、本家のサイトからcsv形式でダウンロードできるじゃないですか。
HighとLowも用意してあるのでありがたいです。
https://indexes.nikkei.co.jp/nkave/historical/nikkei_stock_average_monthly_jp.csv
以下、ダウンロードからDataframe化するまでのソースです。
import pandas as pd import io import requests from datetime import datetime import re NIKKEI_MONTHLY_DATA_URL = 'https://indexes.nikkei.co.jp/nkave/historical/nikkei_stock_average_monthly_jp.csv' data = requests.get(NIKKEI_MONTHLY_DATA_URL).content.decode('shift-jis') nikkei_monthly_df = pd.read_csv(io.StringIO(data)) nikkei_monthly_df #rename columns nikkei_monthly_df = nikkei_monthly_df.rename(columns={ 'データ日付': 'date', '終値': 'Close', '始値': 'Open', '高値': 'High', '安値': 'Low'}) #データ日付欄(rename後はdate)をdatetimeにする pattern = re.compile(r'([12]\d{3}/(0[1-9]|1[0-2])/(0[1-9]|[12]\d|3[01]))') nikkei_monthly_df.date = list(map(lambda x : datetime.strptime(x, '%Y/%m/%d') if pattern.match(x) else x, nikkei_monthly_df.date)) nikkei_monthly_df = nikkei_monthly_df.dropna(thresh=3) nikkei_monthly_df = nikkei_monthly_df.set_index('date') nikkei_monthly_df
Plotlyでチャートを描画するとこんな感じになります。PlotlyのCandleStickチャートはOpen, High, Low, Closeを指定するだけでいいので直感的です。
from plotly.offline import init_notebook_mode, iplot import plotly.graph_objs as go init_notebook_mode(connected=True) trace = go.Candlestick(x=nikkei_monthly_df.index, open=nikkei_monthly_df.Open, high=nikkei_monthly_df.High, low=nikkei_monthly_df.Low, close=nikkei_monthly_df.Close) layout = go.Layout( xaxis = dict( rangeslider = dict( visible = False ) ), yaxis = dict(exponentformat="none") ) data = [trace] fig = go.Figure(data=data,layout=layout) iplot(fig, filename='simple_candlestick')
デフォルトだとy軸が20kと表示されてしまうのでyaxis = dict(exponentformat="none")
をセットしてあげます。