はじめに
nagiさん製DataUtilityからタイトルのとおり一連のことをやったのでZenn初投稿での練習兼ねて何かやってみたいと思い書き起こしてみました。
データ取得
import DataUtility as du
start_ymd = '2021/09/01'
end_ymd = '2021/10/8'
symbol = 'BTCUSD'
period = '1S'
output_dir = f'./{symbol}/ohlcv/{period}/'
request_interval = 0.0
progress_info = True
du.Tool.save_daily_ohlcv_from_bybit_trading_gz(start_ymd, end_ymd, symbol, period, output_dir, request_interval, progress_info)
データが取得できたか確認
# データ読み込み
bydf=pd.read_csv('BTCUSD/ohlcv/1S/20211001.csv')
# Zennに貼り付けるために先頭5行をmarkdownに変換
print(bydf.head().to_markdown())
|
unixtime |
open |
high |
low |
close |
volume |
0 |
1.63305e+09 |
43800 |
43800 |
43800 |
43800 |
3011 |
1 |
1.63305e+09 |
43800 |
43800 |
43800 |
43800 |
1 |
2 |
1.63305e+09 |
43800 |
43800 |
43799.5 |
43799.5 |
446431 |
3 |
1.63305e+09 |
43799.5 |
43800 |
43799.5 |
43799.5 |
24260 |
4 |
1.63305e+09 |
43799.5 |
43800 |
43799.5 |
43800 |
1051 |
結合
# 事前準備として20211001から2021008までのデータをリストにしておく
bydf = [pd.read_csv(f'BTCUSD/ohlcv/1S/2021100{i}.csv') for i in range(1, 8, 1)]
# 結合
df_concat = du.Tool.concat_df(bydf, sort_column='unixtime')
# Zennに貼り付けるために先頭1000から1005行までをmarkdownに変換
print(df_concat[1000:1005].to_markdown())
|
unixtime |
open |
high |
low |
close |
volume |
1000 |
1.63305e+09 |
43727 |
43727.5 |
43727 |
43727.5 |
3542 |
1001 |
1.63305e+09 |
43727 |
43727 |
43727 |
43727 |
74100 |
1002 |
1.63305e+09 |
43727 |
43727.5 |
43727 |
43727.5 |
31000 |
1003 |
1.63305e+09 |
43727 |
43727.5 |
43727 |
43727.5 |
0 |
1004 |
1.63305e+09 |
43727 |
43727 |
43727 |
43727 |
57419 |
datetimeに変換
df_concat.rename(columns={'unixtime': 'datetime'}, inplace=True)
df_concat=df_concat.set_index('datetime')
df_concat.index = pd.to_datetime(df_concat.index, unit='s', utc=True).tz_localize(None)
完成
# 日付の境界あたりをmarkdownにしつつちゃんと結合されているか確認
print(df_concat['2021-10-01 23:59:58':'2021-10-02 00:00:03'].to_markdown())
datetime |
open |
high |
low |
close |
volume |
2021-10-01 23:59:58 |
48131 |
48131 |
48131 |
48131 |
114 |
2021-10-01 23:59:59 |
48131.5 |
48131.5 |
48131.5 |
48131.5 |
20000 |
2021-10-02 00:00:00 |
48131 |
48131.5 |
48131 |
48131 |
8164 |
2021-10-02 00:00:01 |
48131 |
48131.5 |
48131 |
48131.5 |
20802 |
2021-10-02 00:00:02 |
48131 |
48132 |
48131 |
48132 |
82459 |
2021-10-02 00:00:03 |
48132 |
48132 |
48131.5 |
48131.5 |
199856 |
Discussion