Python で 豪ドル/円チャ-ト を探求
豪ドル/円 CSV ダウンロ-ドデ-タ グラフ化
引き続きダウンロ-ドした mane_chart_go.csv デ-タをグラフ化していきます。
過去pandas を使う
のなかで、
Anaconda3(64-bit) Jupyter Notebook
で pandas と pyplot を使って、エクセルファイルのグラフ化
について説明しました。
ここでは、VirtualBox Ubuntu Server のなかでの CSV ファイルのグラフ化について
説明していきたいと思います。
デ-タの集計と解析を行うためのライブラリは Python には多数そろっています。
その中でも CSV やエクセルとの連携が最も優れているのが pandas です。
これを使うと CSV ファイルを簡単に Python に取り込むことができます。
pandas は利用価値は沢山あるのですが、今回は CSV 連携について説明します。
pandas インスト-ル
pandas をインスト-ルします。
Ubuntu ディスクトップ画面から端末画面を開きます。
yamada@ubuntu-20:~$
sudo pip3 install pandas
Enter を押してインスト-ルを開始します。
しばらく黙りこくってからコメントが次々と出てきて完了します。
インスト-ル結果を見ます。
$ sudo pip3 show pandas
でインスト-ルを確認すると
/usr/local/lib/python3.8/dist-pacages
に入ったことがわかります。
pandas は CSV ファイルの読み込みのために使用します。
CSV ファイルのグラフ化では pyplot Numpy も使用しますが、これは
Python/pyplot インスト-ル
のなかですでにインスト-ル済みです。
まだの方は pyplot (matplotlib) もインスト-ルしてください。
おっと pip3 がない方もここを参照してください。
mplfinance インスト-ル
ロ-ソク足チャ-トを作成するためにもう一つ必要なパッケ-ジがあります。
この作成にはこの上記のライブラリの他に、 mplfinance をインストールする必要があります。
ローソク足チャートを含む金融関係のグラフ描画機能はもともと matplotlib.finance として
Matplotlib に含まれていたが、Matplotlib バージョン2.0から mpl_finance という
別のパッケージとして切り出されました。
さらに mplfinance という新たなパッケージが作られ、2021年現在は
mpl_finance は DEPRECATED(非推奨)となり mplfinance の使用が推奨されています。
mplfinance は Matplotlib とは別にインストールする必要があります。
pip3 を使います。
Ubuntu ディスクトップ画面から端末画面を開きます。
yamada@ubuntu-20:~$
sudo pip3 install mplfinance
Enter を押してインスト-ルを開始します。
しばらく黙りこくってからコメントが次々と出てきて完了します。
インスト-ル結果を見ます。
$ sudo pip3 show mplfinance
でインスト-ルを確認すると
/usr/local/lib/python3.8/dist-pacages
に入ったことがわかります。
もし間違って、mpl_finance を入れてしまった人は、これはアンインスト-ル
しておきましょう。
yamada@ubuntu-20:~$
sudo pip3 uninstall mpl_finance
これで必要なパッケ-ジが揃いました。
豪ドル/円 CSV ダウンロ-ドデ-タ グラフ化ファイル作成
それでは、豪ドル/円 CSV ダウンロ-ドデ-タをグラフ化していきます。
その内容は、140日分の毎日の豪ドル/円の動きから
5日先までの予測値をグラフ表示
140日分の豪ドル/円の動きをロ-ソク足表示
します。
ライブラリ取り込み
取り込む必要があるライブラリは4つです。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# import mplfinance as mpf
from mplfinance.original_flavor import candlestick_ohlc
本当は、mplfinance を使用してロ-ソク足を表示したかったのですが、
予測値グラフとうまく重ね表示が私の力ではうまくできなかったので、
旧の candlestick_ohlc を使用しました。
mplfinance を使用するとロ-ソク足の日付表示処理等がやり易いのですが残念です。
ダウンロードファイル読込
/public_html/manep/mane_chart_go.csv ファイルを読み込みます。
このファイルの0行目のヘッダー情報は日本語で書かかれています。
単に読込むと文字化けしますので、文字コードを cp932 を指定すると文字化けしないようです。
CSV ファイルの保存場所は絶対パスで表記する必要があります。
xl_df = pd.read_csv("/home/yamada/public_html/manep/mane_chart_go.csv", encoding="cp932") print(xl_df)
Python 多項式フィッティングで予測
気温や株式の価格のような連続したデ-タがある時、
これを数式で表現できると将来の値を予測するようなことができます。
多項式フィッティングを行うと、数値変化を関数化することができます。
例えば5次式で表すと仮定すると
のように書くことができます。
この時 a0~a5 の値を決めることができれば、数値変化を関数化することができます。
これを実現してくれるのが、Numpy の中にある polyfit 関数です。
この関数の使い方についてこれから順次説明していきます。
Python 多項式フィッティング準備
Python 多項式フィッティングを適用するデ-タは"終値(売り)"の値です。
mane_chart_go.csv のなかから"終値(売り)"の列デ-タを抜き取ります。
Close = xl_df["終値(売り)"].values
y 軸値(Close)を呼出すための仮の x 軸値(Idx)が必要です。
Idx は 0~デ-タ数分の各整数値が入った配列です。
これは
Idx = xl_df.index
から取得することができます。
次ぎに未来の x 軸値(Idx5)5日間を作成します。
Idx[-5:]とすると
ラストから5個の整数値を切り取ることができます。
それに + 5日
Idx5 = Idx[-5:] + 5
すると
Idx5 は ラストから +5 の5個の整数値となります。
例えば Idx のラストが 98 とすると
Idx5 は
99,100,101,102,103
となります。
よって x 軸の 99~103 に5個の未来の予測値が表示されることになります。
ちなみに
print(Idx)
とすると
RangeIndex(start=0, stop=99, step=1)
print(Idx5)
とすると
RangeIndex(start=99, stop=104, step=1)
となり
start=0 のindex 行にはデ-タがありますが、
stop=99 または stop=104 の index 行にはデ-タはありません。
ちなみに今回グラフ化するダウンロ-ドした mane_chart_go.csv デ-タの内容を下記に表示します。
index 日付 通貨ペア 足種別 始値(売り) 高値(売り) 安値(売り) 終値(売り)・・・ 0 2020/10/20 00:00:00 AUD/JPY 日足 74.484 74.608 74.200 74.355 ・・・ 1 2020/10/21 00:00:00 AUD/JPY 日足 74.316 74.613 74.207 74.420 ・・・ 2 2020/10/22 00:00:00 AUD/JPY 日足 74.325 74.666 74.191 74.640 ・・・ 3 2020/10/23 00:00:00 AUD/JPY 日足 74.596 74.918 74.374 74.753 ・・・ 4 2020/10/26 00:00:00 AUD/JPY 日足 74.674 74.938 74.503 74.664 ・・・ .. ... ... .. ... ... ... ... ... 94 2021/03/02 00:00:00 AUD/JPY 日足 82.902 83.629 82.607 83.449 ・・・ 95 2021/03/03 00:00:00 AUD/JPY 日足 83.434 83.759 83.123 83.208 ・・・ 96 2021/03/04 00:00:00 AUD/JPY 日足 83.166 84.033 83.009 83.353 ・・・ 97 2021/03/05 00:00:00 AUD/JPY 日足 83.382 83.589 82.767 83.307 ・・・ 98 2021/03/08 00:00:00 AUD/JPY 日足 83.323 83.747 82.930 83.265 ・・・
ここまでで Numpy polyfit 関数 Python 多項式フィッティング を実行する準備ができましたので引き続きこれを用いて豪ドル/円を予測するファイルを作成します。