pythonのpandasで、1分足チャートから15分足、30分足、1時間足に再集計してみた。
自分で再集計してみると、抜けている箇所とかあるな。dropna()で削除しちゃったけど、前後のレコードで値を補完すべき?
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 41 42 43 44 45 46 47 48 |
import requests from datetime import datetime import pandas as pd # データフレームの列名は"Time"、"Open"、"High"、"Low"、"Close"である必要がある。 df_columns = [ "Time", "Open", "High", "Low", "Close", "Volume", "QuoteVolume" ] # 過去チャートをCSVファイルからDataFrameに格納 df = pd.read_csv('chart.csv', header=0, names=df_columns) # datetime型じゃないとresampleが使えないので変換 df['datetime'] = pd.to_datetime(df['Time'].astype(int), unit='s') df['datetime'] = df['datetime'] + pd.Timedelta(hours=9) #UTCから日本時間に日付へ変換します。 # カラムごとの計算手法を指定 agg_dict = { "Time": "max", "Open": "first", "High": "max", "Low": "min", "Close": "last", "Volume": "sum", "QuoteVolume": "sum" } # 1分足から15分足、30分足、1時間足に再集計に変換する # M=月、W=週、D=日、H=時、T=分、S=秒。15T=15分単位 term = '15T' df_resample = df.set_index("datetime").resample(term).agg(agg_dict).round({'Volume': 10, 'QuoteVolume': 0}) # print(df_resample) # df_isnull = df[df['Open'].isnull()] # print(df_isnull) # CSVファイルに保存(NaNを含むレコードは削除) df_resample.dropna().to_csv(term + ".csv") #, index = False) # datetimeカラムは、もう不要なので削除 # df_drop = df_resample.reset_index() # df_csv = df_drop.drop(columns='datetime') |