前回の約束通りCSVファイルからグラフを作ります!
Pythonを使いますので、Anacondaなどをダウンロード、インストールして使ってください。
【入門編】便利なPython Anacondaをインストールから使い方まで徹底解説!
CSVファイルのPuzzle_HashからPoolを識別する先頭数文字を覚えておきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
import pandas as pd from matplotlib import pyplot as plt # CSV ファイルを読み込み df = pd.read_csv('wallet.csv', names=['入出', '宛先', '日時(str)', '金額(16進)']) # 16進数文字列を10進数に変換する関数, map関数でDataFrameに適用できる def func(value): return int(value, 16) # 16進数文字列を整数にして、入出が0のときは正の数(入金)、1のときは負の数(出金)とする df['金額']=df['金額(16進)'].map(func) * ((-1)**df['入出']) # 日付文字列を datetime型に変換。pandasのpd.to_datetimeが使える df['日時']=pd.to_datetime(df['日時(str)']) # それぞれのPoolを識別する先頭文字列を指定(区分けできれば何文字でもいい) # ★★★それぞれの環境に合わせてください PoolChia_str = '238f' HDDMining_str = '938e' df['PoolChia']=0 df['HDDMining']=0 df.loc[df['宛先'].str.startswith(PoolChia_str), 'PoolChia'] = df['金額'] df.loc[df['宛先'].str.startswith(HDDMining_str), 'HDDMining'] = df['金額'] df['PoolChia累積']=df['PoolChia'].cumsum() df['HDDMining累積']=df['HDDMining'].cumsum() # Plot する最小限の DataFrameを作成 df_plot = df[['日時', 'PoolChia累積', 'HDDMining累積']] # Pool を始めた頃からのみ Plot, 最初の4行を削除(それぞれの環境に合わせてください) #df_plot=df_plot[4:] fig, ax = plt.subplots(figsize = (12, 8)) ax.plot(df_plot['日時'], df_plot['PoolChia累積'], label='PoolChia') ax.plot(df_plot['日時'], df_plot['HDDMining累積'], label='HDDMining') ax.grid(True) ax.legend() labels = ax.get_xticklabels() plt.setp(labels, rotation=45, fontsize=10); plt.show() plt.gca().clear() |
浮動小数点にすると丸め誤差が出てしまうので、整数のままあつかっています。なので単位はXCHの1兆分の1であるmojoです。
Anacondaのコマンドプロンプトなどで
> python Graph.py
と実行するとグラフが表示されます。
コピー&ペーストなど手作業がいらないぶん、全自動で楽ですね!
師匠、コマンド一発でグラフが出るようにしたいのですが、どうすればいいですか?
では、このバッチファイルを使ってみてください。各自の環境に合わせてくださいね。
1 2 3 4 5 6 7 8 9 |
c:\sqlite3\sqlite3 -readonly C:\Users\<ユーザー名>\.chia\mainnet\wallet\db\blockchain_wallet_v1_mainnet_<公開指紋番号>.sqlite ".mode csv" ".output wallet.csv" "SELECT sent, to_puzzle_hash , datetime(created_at_time, 'unixepoch', 'localtime'), hex(amount) FROM transaction_record;" rem Anaconda環境起動し、実行したい環境をactivate call C:\Users\<ユーザー名>\anaconda3\Scripts\activate.bat call activate 環境名 python C:\python\Graph.py del wallet.csv |
できました!ありがとうございます!