# データをdfとして読み込む。
df = pd.read_csv(file_nm, encoding='cp932') # file_nmに株価のcsvファイルのパスを指定。
# 上記のcsvには無駄な情報があるため、dfとしての形式を整える。
date = df.index[1:] # 日付の値を格納するdateを生成する。
df = pd.DataFrame(df.values[1:,:], columns=df.loc['日付'].values) # 余分な情報を削除する。
df['日付'] = date
df = df[['日付', '始値', '高値', '安値', '終値', '出来高', '終値調整値']]
# dfのカラムを日付と終値に絞る。
df = df[['日付','終値']]
# 終値に格納される値のデータ型を文字列からfloat32に変更する。
df.loc[:,'終値'] = df['終値'].astype(np.float32)
# 2013年6月28日を0, 2013年7月1日を1, 2013年7月2日を2, ...とする日付番号カラムを生成する。
date_num = list(range(len(df.日付)))
df['日付番号'] = date_num
df = df[['日付', '日付番号', '終値']]
# 1日前の終値のカラムを生成する。
df_2 = df.copy()
df_2['日付番号'] = df_2['日付番号'] + 1
df = pd.merge(df, df_2[['日付番号' ,'終値']], on='日付番号', how='left')
df = df.rename(columns={'終値_x':'当日の株価', '終値_y':'前日の株価'})
# 欠損値を含む行を除外する。
df = df.dropna()
# 特徴量, 目的変数を格納するX, yを生成する。
y = df.当日の株価.values
X = df.前日の株価.values
def reshape_row(arr):
"""X, yの形状を変更する。(行ベクトルに変更する。)
"""
return arr.reshape(-1, 1)
X, y = reshape_row(X), reshape_row(y)
# X, yをtrainデータとvalidationデータに7:3の割合で分割する。
train_X, val_X, train_y, val_y = train_test_split(X, y, test_size=0.3)