как преобразовать фрейм данных в массив 2d numpy - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь найти способ сделать массив numpy из фрейма данных, чтобы я мог использовать его в качестве обучающих данных для тензорного потока. Это функция, которая принимает свечи для цены акции и создает фрейм данных с pandas, теперь все значения фрейма данных являются плавающими, поэтому тип данных - float32, исправьте меня, если я ошибаюсь, как я могу преобразовать вывод без первой строки, конечно, в массив numpy для использования тензорного потока

def some_function(candles):
   date_time = []
    open_lst = []
    high_lst = []
    low_lst = []
    close_lst = [] 
    volume_lst = []
    for item in candles:
        #print (item)
        t_time = float(item[0])/1000
        #print (t_time)
        #dt_obj = datetime.fromtimestamp(t_time)
        date_time.append(t_time)
        #date_time.append(dt_obj)
        open_lst.append(float(item[1]))
        high_lst.append(float(item[2]))
        low_lst.append(float(item[3]))
        close_lst.append(float(item[4]))
        volume_lst.append(float(item[5]))
    ## creating data frame 
    coin_data_frame = {
        'date_time' : date_time,
        'open'  : open_lst,
        'high'  : high_lst,
        'low'   : low_lst,
        'close' : close_lst,
        'volume': volume_lst,
    }
    df = pd.DataFrame(coin_data_frame , columns = [ 'date_time' , 'open' , 'high' , 'low' , 'close','volume' ])

    #print (df.head(5))


    ### the last 3,5 hours 
    self.df = df

    df['close'] = df[['close']].shift(-15)
    df.set_index("date_time", inplace=True)

   # graph_df(df.head(10))
    print (df.tail(40))

вывод:

               open      high       low     close    volume
 date_time                                                    
 1.592598e+09  0.001719  0.001720  0.001718  0.001720    342.21
 1.592598e+09  0.001719  0.001719  0.001718  0.001720   1217.08
 1.592599e+09  0.001719  0.001719  0.001718  0.001718    237.83
 1.592599e+09  0.001719  0.001719  0.001718  0.001718    228.67
 1.592599e+09  0.001719  0.001722  0.001718  0.001718   1690.65
 1.592600e+09  0.001721  0.001721  0.001719  0.001717   1251.64
 1.592600e+09  0.001719  0.001722  0.001719  0.001717   1625.74
 1.592600e+09  0.001721  0.001722  0.001720  0.001717    446.60
 1.592600e+09  0.001721  0.001721  0.001719  0.001716    372.68
 1.592601e+09  0.001720  0.001721  0.001719  0.001718    330.26
 1.592601e+09  0.001721  0.001722  0.001721  0.001718    475.65
 1.592601e+09  0.001721  0.001722  0.001720  0.001718    406.49
 1.592602e+09  0.001721  0.001721  0.001719  0.001719   1013.71
 1.592602e+09  0.001720  0.001721  0.001720  0.001720    602.16
 1.592602e+09  0.001721  0.001721  0.001720  0.001720    138.23
 1.592602e+09  0.001720  0.001721  0.001720       NaN    441.67
 1.592603e+09  0.001720  0.001721  0.001719       NaN    100.16
 1.592603e+09  0.001721  0.001721  0.001718       NaN   8551.14
 1.592603e+09  0.001718  0.001718  0.001716       NaN  28164.34
 1.592604e+09  0.001718  0.001719  0.001717       NaN  27695.52
 1.592604e+09  0.001718  0.001719  0.001715       NaN  17872.19
 1.592604e+09  0.001717  0.001717  0.001715       NaN   8310.23
 1.592605e+09  0.001717  0.001717  0.001715       NaN    754.65
 1.592605e+09  0.001717  0.001717  0.001716       NaN    695.99
 1.592605e+09  0.001716  0.001718  0.001716       NaN    921.44
 1.592606e+09  0.001718  0.001719  0.001717       NaN   1474.45
 1.592606e+09  0.001718  0.001720  0.001717       NaN   3991.33
 1.592606e+09  0.001718  0.001720  0.001717       NaN    457.34
 1.592606e+09  0.001719  0.001720  0.001718       NaN   1165.05
 1.592607e+09  0.001720  0.001720  0.001718       NaN   1786.93

1 Ответ

0 голосов
/ 20 июня 2020

Простое выполнение df.to_numpy() даст вам нужный массив numpy. (для pandas> = 0,24. Для более низких версий эквивалент df.values, который теперь устарел)

Просто убедитесь, что вы предварительно сохранили столбец «целевого» фрейма данных в вектор y и вызовите df.drop(), чтобы удалить его из фрейма данных перед преобразованием в numpy, чтобы он случайно не попал в вашу сеть.

Кроме того, это не будет включать столбец df.index (data_time ' s) в результирующем массиве. Полагаю, это ваше ожидаемое поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...