Bot

仮想通貨botの開発記録#43(2024/1/9)「データサイエンスの学習②ChatGPTでチャートとヒートマップの作成をする」

前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。

データサイエンスに親しむことが当面の目標です。

今回は、AIにコードを書かせてみました。

Pythonで表を描かせる仕組みを覚えたので、AIに指示を出して描かせる実験です。

Yodaka

ChatGPTに出した指示と最終的に仕上がったコードを載せておきます。

準備(JSONファイルの生成)

今回指定したJSONファイルは、以下の記事のコードを使って生成したものです。

1分ローソク足データ生成ver.3

Yodaka

Pythonの動作環境があれば、誰でも実行できます。

ローソク足チャート

Yodaka

Pansdasを使って以下のJSONファイルのデータを読み込んで、ローソク足チャートを作るコードを書きなさい。
ファイルパス「/ファイルパス/minute_candlestick_data.json」
ファイルデータのサンプル「{"timestamp": "2023-11-07T09:57:00", "open": 5501400.0, "high": 5501400.0, "low": 5501400.0, "close": 5501400.0, "volume": 0.02, "trades": 2} {"timestamp": "2023-11-07T09:58:00", "open": 5499750.0, "high": 5499750.0, "low": 5499487.0, "close": 5499487.0, "volume": 0.02, "trades": 2}」

Yodaka

上記のコードに追記して出来高も表示するようにして

Yodaka

作成される表を縦横2倍の大きさにしたい。どうしたら良いか?

import pandas as pd
import matplotlib.pyplot as plt
import mplfinance as mpf

# JSONファイルの読み込み
file_path = '/ファイルパス/minute_candlestick_data.json'
df = pd.read_json(file_path, lines=True)

# タイムスタンプを日付型に変換
df['timestamp'] = pd.to_datetime(df['timestamp'])

# データフレームのインデックスを設定
df.set_index('timestamp', inplace=True)

# グラフの作成
fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True, gridspec_kw={'height_ratios': [3, 1]}, figsize=(12, 8))  # ここでfigsizeを設定

# ローソク足チャートの作成
mpf.plot(df, type='candle', ax=ax1, volume=ax2, show_nontrading=True, warn_too_much_data=len(df))

# グラフの表示
plt.show()
Yodaka

自前のJSONデータから、ローソク足チャートが生成されました。

ヒートマップ

Yodaka

pythonを使って以下のデータをもとに「出来高とその他の値の相関を示す表」を出すコードを書きなさい。
ファイルパス「/ファイルパス/minute_candlestick_data.json」
ファイルデータのサンプル「{"timestamp": "2023-11-07T09:57:00", "open": 5501400.0, "high": 5501400.0, "low": 5501400.0, "close": 5501400.0, "volume": 0.02, "trades": 2} {"timestamp": "2023-11-07T09:58:00", "open": 5499750.0, "high": 5499750.0, "low": 5499487.0, "close": 5499487.0, "volume": 0.02, "trades": 2}」

import json
import pandas as pd

# ファイルパス
file_path = "/ファイルパス/minute_candlestick_data.json"

# JSONファイルからデータを読み取り
with open(file_path, 'r') as file:
    data = [json.loads(line) for line in file]

# Pandas DataFrameに変換
df = pd.DataFrame(data)

# 出来高とその他の値の相関を示す表を作成
correlation_table = df.corr()

# 結果の表示
print(correlation_table)

このままだと、表だけで分かりづらいので視覚的に分かりやすいタイプに変えてもらいましょう。

Yodaka

視覚的にわかるようにできる?

import json
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# ファイルパス
file_path = "/ファイルパス/minute_candlestick_data.json"

# JSONファイルからデータを読み取り
with open(file_path, 'r') as file:
    data = [json.loads(line) for line in file]

# Pandas DataFrameに変換
df = pd.DataFrame(data)

# 出来高とその他の値の相関を示す表を作成
correlation_table = df.corr()

# ヒートマップを作成
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_table, annot=True, cmap="coolwarm", fmt=".2f", linewidths=.5)
plt.title('Correlation Heatmap')
plt.show()
Yodaka

あっという間にヒートマップが生成されました。

まとめ

ここまでの流れでかかった時間は約10分でした。

自分でコードを書くよりもはるかに速いです。

データ分析の基礎は、AIにやってもらうのが有効かもしれません。

そもそも、データ分析をするコード自体をAIに書いてもらって、その上で検証までAIにさせ続ければものすごく楽になるはずです。

ようやく基礎固めができたと思ってこの調子で学習を進めます。

-Bot