前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。
今回は【Botter Advent Calendar2023】仮想通貨で月に1万円を稼ぐC級Botterになろうを参考に学習を進めた経過をまとめます。
環境設計
jupyterはすでにインストール済みだったので、この部分はカット。
レンタルサーバーも契約済みです。
pythonの勉強
記事内で紹介されていた以下の例題に取り組みました。
例題 1: for を使って1から10までの数の合計を計算しましょう
例題 2: while を使って1から10までの数の合計を計算し、breakで抜けましょう
例題 3: 5が偶数か奇数かを判断し、偶数なら何もせず、奇数ならprintで奇数と出力してください。
例題 4: 777を0で割り、エラーをキャッチしてください(try-except)
例題 5: 例題1~4を実行する関数を作ってください。
例題 5に合わせて、関数で表記してあります。
#例題 1: for を使って1から10までの数の合計を計算しましょう def add_number(): i = 0 number = 0 for i in range(10): i += 1 number += i print(number)
#例題 2: while を使って1から10までの数の合計を計算し、breakで抜けましょう def add_number_2(): i = 0 number = 0 while True: i += 1 number += i if i >= 10: break print(number)
#例題 3: 5が偶数か奇数かを判断し、偶数なら何もせず、奇数ならprintで奇数と出力してください。 def odd_number(): num = 5 if num% 2 == 0: pass else: print("奇数です")
def Zoro_Div_e(): x = 777 y = 0 try: result = x / y except ZeroDivisionError as e: print(f"エラーが発生しました:{e}")
実行結果は以下の通りです。
【宿題】
ChatGPTに問題を作らせて、毎日トレーニングをする。
以下のような感じで、遊び感覚で取り組みます。
モジュールの準備
主に4つのモジュールについて使い方を覚えていきます。
Pandas
以下の例題に取り組みました。
例題1: 適当なCSVファイルからデータを読み込み、最初の5行を表示してください。
例題2: df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}) と定義します。A列だけを抽出して平均値を出してください
例題3: df2をdfの2倍の数値が入ったものとします。dfとdf2をpd.concatを使って結合してください。
例題4: 例題3の結果をcsvに出力してください。
まずは動画を見ながらコードを書いてみて概要を理解しました。参考にしたのは、こちらの動画。
【Pythonプログラミング】Pandasの基本 〜表形式データ・データ分析〜 初心者向けのDataFrameの操作入門!
#例題1の答え import pandas as pd df = pd.read_csv('sales_sample.csv') #display(df) df.loc[:5] #df.head()#「最初の5行」という指定なので.head()でもOK
csvデータはデータサイエンスの学習で使ったものを流用しています。
調べても分からないことはChatGPTに尋ねながら勉強です。
#例題2 import pandas as pd df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}) df["A"].mean()
#例題3 df_2 = df.copy()*2 result_concat = pd.concat([df, df_2,], axis=1) result_concat
#例題4 result_concat.to_csv('result_concat.csv', index=False)
それぞれの実行結果です。
ChatGPTからの模範解答は以下の通り。解説もあって分かりやすいですね。
#例題1 import pandas as pd # CSVファイルからデータを読み込んで最初の5行を表示 file_path = 'path/to/your/file.csv' # ファイルパスは適切に設定してください data = pd.read_csv(file_path) print(data.head())
#例題2 import pandas as pd # データフレームの作成 df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}) # A列だけを抽出して平均値を出力 average_A = df['A'].mean() print("A列の平均値:", average_A)
#例題3 import pandas as pd # データフレームの作成 df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}) # df2を作成(dfのA列の値を2倍にしたもの) df2 = df.copy() df2['A'] = df2['A'] * 2 # pd.concatを使ってdfとdf2を結合 result_concat = pd.concat([df, df2], axis=1) # 結合結果を表示 print(result_concat)
#例題4 import pandas as pd # データフレームの作成 df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}) # df2を作成(dfのA列の値を2倍にしたもの) df2 = df.copy() df2['A'] = df2['A'] * 2 # pd.concatを使ってdfとdf2を結合 result_concat = pd.concat([df, df2], axis=1) # 結合結果をCSVに出力 result_concat.to_csv('result_concat.csv', index=False)
【宿題】
JSON形式のファイルでPandasを使ってみる
ccxtライブラリ
起動を確認。
import ccxt print(ccxt.exchanges)
内容が多いため、別の記事でまとめます。
宿題
ccxtライブラリを熟読して、サンプルコードを手書きする。
Web3.pyのインストール。
とりあえずここからhttps://t.co/ZL5aqfyG8h をさわってみる|syucchin https://t.co/OSo3C282bE #zenn
— よだか(夜鷹/yodaka) (@yodakablog) January 8, 2024
一応インストールはしましたが、学習することが膨大に増えていくことが予想されるため、とりあえずDeFi方面は後回しにします。
EVMチェーンも botの主戦場として要検討。CEX以外にも視野を広げていく。
TIAセントリックなエアドロップシーズンにDeep Dive - by Lawrence https://t.co/KPNH9yArHm
— よだか(夜鷹/yodaka) (@yodakablog) January 15, 2024
まとめ
すでに環境構築ができていたため、作業に取り掛かるまでの時間は大幅に削減できました。
日頃からPythonを使ってロジックを書くことに慣れながら、Botterとしてのルーティンを馴染ませていきます。
宿題まとめ
ChatGPTに問題を作らせて、毎日トレーニングをする。
JSON形式のファイルでPandasを使ってみる。
ccxtライブラリを熟読して、サンプルコードを手書きする。
→web3.pyについても勉強方法は基本的に同じ。