Jupyter Notebookでビットコインのローソク足チャートを表示してみました。
ライブラリの準備
pandasとmplotlibをインストールしてください。
現在のところ、ローソク足チャートの描画に必要な mpl_finance はパッケージ名で
インストールできなくなっているので、githubのリポジトリを指定してインストールしました。
pip install git+https://github.com/matplotlib/mpl_finance
ビットコインの時系列データ
kaggleに登録後、下記ページからダウンロードできます。
このデータは1分足のデータで、期間がJan 2012 to October 2017となっています。
ちょっと試すには、大きいので、一部を抜き出しました。
$ head -n 1 bitstampUSD_1-min_data_2012-01-01_to_2017-10-20.csv > bitcoin.csv
$ tail -n 1000 bitstampUSD_1-min_data_2012-01-01_to_2017-10-20.csv >> bitcoin.csv
bitcoin.csvをJupyter Notebookからアクセスできる場所に置いてください。
ローソク足チャートの描画
プログラム全体です。
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from pandas_datareader import data as dr
import datetime as dt
from mpl_finance import candlestick_ohlc
import datetime
%matplotlib inline
from pylab import rcParams
rcParams['figure.figsize'] = 20,10
data = pd.read_csv('/vagrant/share/bitcoin.csv')
data = data[1:200]
data = data.reset_index()
data["Date2"] = data['Timestamp'].apply(lambda x:mdates.date2num(datetime.datetime.fromtimestamp(x)))
tuples = [tuple(x) for x in data[['Date2','Open','High','Low','Close']].values]
fig, ax = plt.subplots()
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%m-%d %H:%M"))
ax.grid(True)
plt.xticks(rotation=45)
plt.xlabel("Date")
plt.ylabel("Price")
plt.title("BTC-USD")
candlestick_ohlc(ax, tuples, width=0.0005,colorup='g', alpha =.4);
分かる範囲で解説すると
from pylab import rcParams
rcParams['figure.figsize'] = 20,10
これは表示されるグラフを大きくするおまじないです、横のサイズ、縦のサイズです。
data = pd.read_csv('/vagrant/share/bitcoin.csv')
data = data[1:200]
data = data.reset_index()
CSVファイルを読み込んでいます。
あまり多いと、ローソクにならないので、200個にしています。
data["Date2"] = data['Timestamp'].apply(lambda x:mdates.date2num(datetime.datetime.fromtimestamp(x)))
元々のCSVはUNIX秒なので、UNIX秒をdatetimeに変換して、それをmatplotlibの日時形式に変換してDate2カラムに挿入します。
tuples = [tuple(x) for x in data[['Date2','Open','High','Low','Close']].values]
値をローソク足チャートで使う構造に変換します。
fig, ax = plt.subplots()
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter("%m-%d %H:%M"))
ax.grid(True)
plt.xticks(rotation=45)
plt.xlabel("Date")
plt.ylabel("Price")
plt.title("BTC-USD")
グラフのインスタンスを作成し、軸の設定をしています。
candlestick_ohlc(ax, tuples, width=0.0005,colorup='g', alpha =.4);
ローソク足チャートを描画します。 widthをいい感じに設定する必要があります。
セミコロンも必要です。