Pythonで日経平均株価をプロットしてみる
今回は、このwebサイトから日経平均株価の日足データを取得します。
データはcsvファイルでダウンロードできます。
jupyterでpythonを実行する同じフォルダにダウンロードしたcsvファイルを保存します。
(ここでは、"nikkei_day.csv"というファイル名にしています。 )
最初に必要なものをimportします。
import matplotlib.pyplot as plt #データプロット import numpy as np #数値解析 import csv #CSV操作 from datetime import datetime as dt #日付データの取り扱い
csvのファイルを中身を見るとわかりますが、
ヘッダーに日付、始値、高値、安値、終値の文字列があります。
なので、csvファイルを読み込んだ後にヘッダーを飛ばします。
csvfile = open("nikkei_day.csv", "r") reader = csv.reader(csvfile) header = next(reader)
日時と価格の変数を定義します。
time=[] price = []
for文でファイルの中身を一文づつ読み込んでいきます。
for line in reader: _time = line[0] + ' 9:00:00' time.append(dt.strptime(_time, '%Y-%m-%d %H:%M:%S')) price.append(float(line[1])) _time = line[0] + ' 15:00:00' time.append(dt.strptime(_time, '%Y-%m-%d %H:%M:%S')) price.append(float(line[4]))
今回は、始値と終値だけをプロットすることにします。
line[0]には日付が入っているので、始値の時間を9:00になるように日時データを作ります。
strptime関数を使って文字列を日時データに変換し、time変数に追加(append)します。
始値はline[1]に入っているので、price変数にappendします。
同様に、終値に関しては時間を15:00としてtime変数に、終値のline[4]をprice変数にappendします。
この変数を使って、X軸に日時データ、Y軸に価格としてプロットすると、
plt.ylabel('Price') plt.xlabel('Date') plt.plot(time,price) plt.show()
下図のようにプロットされると思います。
(2017年7月に取得した直近250日のデータです。)
ソースコード全文
import matplotlib.pyplot as plt import numpy as np import csv from datetime import datetime as dt csvfile = open("nikkei_day.csv", "r") reader = csv.reader(csvfile) header = next(reader) time=[] price = [] for line in reader: _time = line[0] + ' 9:00:00' time.append(dt.strptime(_time, '%Y-%m-%d %H:%M:%S')) price.append(float(line[1])) _time = line[0] + ' 15:00:00' time.append(dt.strptime(_time, '%Y-%m-%d %H:%M:%S')) price.append(float(line[4])) plt.ylabel('Price') plt.xlabel('Date') plt.plot(time,price) plt.show()