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()
Overleafで日本語のTex文書を書いてみる
OverleafはWeb上で使えるTex文書作成ツールです。Texのインストールや環境整備は大変な作業ですので、オンライン環境さえあればすぐに書き始められるのは便利です。
始めるにはOverleafに登録する必要があります。右上の"Sign UP"を押すと新たにアカウントを作成することができますし、GoogleやTwitterのアカウントを持っていればリンクさせて登録することもできます。サインアップできると次のような画面に移ります。
左の"NEW PROJECT"をクリックするといくつかのテンプレートが出てきます。今回は、"Basic"にある"Sample paper"で作ってみたいと思います。
"Sample paper"をクリックすると下のような画面になると思います。左の画面がソースコードで右の画面が出力です。リアルタイムにTexの出力が見えるのはとても便利です。
英語の文書を書くのはこのテンプレートでもいいのですが、日本語を書きたい場合にはそれなりに設定が必要そうです。そこで、Akiniwaさんが作成された日本語用テンプレート
を使ってみます。CJK(Chinese-Japanese-Korean)言語が使えるパッケージが設定してありますので、これで日本語の入力も行えます。"OPEN AS TEMPLATE"を押すと次のようなテンプレートが開きます。
日本語で入力したい領域を次のようにコマンドではさむと入力ができます。
\begin{CJK*}{UTF8}{zhsong} \end{CJK*}