ファイルをPanda DataFrameに読み込む
import pandas as pd
usecols = ['Date','Open','High','Low','Close','Volume']
file="~/sshmnt/candles_15m_bybit_BTC-USDT.csv"
data = pd.read_csv(file,names=usecols,parse_dates=True,index_col='Date')
print(len(data))
#data2=data[45700:45800]
#data2=data[46000-1000:46000]
#data2=data[0:59000]
data2=data.tail(120+4*24*1) ##1日分+120
print(len(data2))
data3=data2.copy()
close_data=data3["Close"]
close_data.plot()
列を追加
data3['Trend'] = 0
data3
#またはNaNを入れることも
data3['Trend'] = np.nan
列(Trend)を削除
data3.drop('Trend',axis=1)
列を抽出
#カラム1つ
data4["Close"]
#または
data4.Close
#カラムを2つ
data4[["Close","signal"]]
特定の行の表示、インデックスから
data3['2022-09-02 10:0:0' : '2022-09-02']
特定範囲の行(インデックス)の特定列に代入する(1)
data3['2022-09-02 10:0:0' : '2022-09-02']['Trend']=2
特定の範囲のindex行の、特定列に代入する。(2) *上記の(1)が動作しない場合
data3.loc['2022-09-01 09:00:00':'2022-09-01 23:0:0',"Trend"]=-1
atでこのようなスライスでの使い方はエラーがでるので使えない
data3.at['2022-09-01 09:00:00':'2022-09-01 23:0:0',"Trend"]=-1
特定範囲の抽出
ts= "2022-09-01 09:00:00"
ts2="2023-01-01 09:00:00"
data2= (data[ts : ts2])
data2
JupyterでPandasの表示設定
pd.set_option('display.max_columns', 10)
pd.set_option('display.max_rows', 300)
データフレームの作成、日付時間をインデックスに
df_test=pd.DataFrame({
'Date':[
'2022-08-19 00:30:00',
'2022-08-19 00:45:00',
'2022-08-19 01:00:00',
'2022-08-19 01:15:00',
'2022-08-19 01:30:00',
'2022-08-19 01:45:00',
'2022-08-19 02:00:00',
'2022-08-19 02:15:00',
'2022-08-19 02:30:00',
'2022-08-19 02:45:00']
}
)
df_i = df_test.set_index('Date')
上記ではインデックスが作れるが、dtypeがobjectになってる
df_i.index
Index(['2022-08-19 00:30:00', '2022-08-19 00:45:00', '2022-08-19 01:00:00',
'2022-08-19 01:15:00', '2022-08-19 01:30:00', '2022-08-19 01:45:00',
'2022-08-19 02:00:00', '2022-08-19 02:15:00', '2022-08-19 02:30:00',
'2022-08-19 02:45:00'],
dtype='object', name='Date')
上記をデイトタイムにするにはこれ
df_i.index=pd.to_datetime(df_i.index)
インデックスを見るとIndexがDatetimeIndexのdtypeがdatetime64になった
df_i.index
DatetimeIndex(['2022-08-19 00:30:00', '2022-08-19 00:45:00',
'2022-08-19 01:00:00', '2022-08-19 01:15:00',
'2022-08-19 01:30:00', '2022-08-19 01:45:00',
'2022-08-19 02:00:00', '2022-08-19 02:15:00',
'2022-08-19 02:30:00', '2022-08-19 02:45:00'],
dtype='datetime64[ns]', name='Date', freq=None)
インデックスを削除する
data4=data4.reset_index()
インデックスを付ける
data4=data4.set_index("Date", inplace=False)
# inplace=Trueは
data4.set_index("Date", inplace=True) ### data4をイコールで指定しなくても適応される