Bot プログラミングスキル 書籍・論文・web記事

仮想通貨botの開発記録#46(2024/1/15)「C級Botterへのステップ①」

2024年1月16日

前回の記事に引き続き、今回も仮想通貨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}")
Yodaka

実行結果は以下の通りです。

【宿題】

ChatGPTに問題を作らせて、毎日トレーニングをする。

Yodaka

以下のような感じで、遊び感覚で取り組みます。

モジュールの準備

主に4つのモジュールについて使い方を覚えていきます。

Pandas

Yodaka

以下の例題に取り組みました。

例題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に出力してください。 

Yodaka

まずは動画を見ながらコードを書いてみて概要を理解しました。参考にしたのは、こちらの動画

【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
Yodaka

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)

それぞれの実行結果です。

Yodaka

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)
Yodaka

内容が多いため、別の記事でまとめます。

宿題

ccxtライブラリを熟読して、サンプルコードを手書きする。

Web3.pyのインストール。

一応インストールはしましたが、学習することが膨大に増えていくことが予想されるため、とりあえずDeFi方面は後回しにします。

まとめ

すでに環境構築ができていたため、作業に取り掛かるまでの時間は大幅に削減できました。

日頃からPythonを使ってロジックを書くことに慣れながら、Botterとしてのルーティンを馴染ませていきます。

宿題まとめ

ChatGPTに問題を作らせて、毎日トレーニングをする。
JSON形式のファイルでPandasを使ってみる
ccxtライブラリを熟読して、サンプルコードを手書きする。
→web3.pyについても勉強方法は基本的に同じ。

-Bot, プログラミングスキル, 書籍・論文・web記事