Ввод содержит бесконечность или слишком большое значение для ошибки dtype (‘float64’)

#python #python-3.x #pandas #scikit-learn #tensorboard

#python #python-3.x #pandas #scikit-learn #тензорная доска

Вопрос:

При запуске этого кода появляется ошибка ввода содержит бесконечность или слишком большое значение для dtype (‘float64’). Как я могу это решить?

 from sklearn import preprocessing
from tensortrade.data.cdd import CryptoDataDownload 
import pandas as pd

cdd = CryptoDataDownload()

data = cdd.fetch("Bitstamp", "USD", "BTC", "1h")

for col in data.columns:
  if col not in ['date', 'unix']:
    data[col]=data[col].pct_change()
    data.dropna(inplace=True)
    data[col] = preprocessing.scale(data[col].values)
    
print(data.head())
 

Ответ №1:

Попробуйте запустить это. Вам нужно заменить значения Nan и Inf на число по вашему выбору

 import numpy as np
from sklearn import preprocessing
from tensortrade.data.cdd import CryptoDataDownload 
import pandas as pd

cdd = CryptoDataDownload()

data = cdd.fetch("Bitstamp", "USD", "BTC", "1h")

for col in data.columns:
  if col not in ['date', 'unix']:
    data[col]=data[col].pct_change()
    data.dropna(inplace=True)
    print(data[col].tolist())
    # replace inf or nan with a number (for my example zero is selected)
    data[col] = [0 if np.isnan(x) or np.isinf(x) else x for x in data[col]]

    data[col] = preprocessing.scale(data[col].values)
    
print(data.head())
 

Ответ №2:

У вас есть бесконечное значение в ваших данных, удалите их с помощью этого:

     data[col] =data[col][data[col]  != float('inf') ]
 
 from sklearn import preprocessing
from tensortrade.data.cdd import CryptoDataDownload 
import pandas as pd

cdd = CryptoDataDownload()

data = cdd.fetch("Bitstamp", "USD", "BTC", "1h")

for col in data.columns:
  if col not in ['date', 'unix']:
    data[col]=data[col].pct_change()
    data.dropna(inplace=True)
    data[col] =data[col][data[col]  != float('inf') ]
    data[col] = preprocessing.scale(data[col].values)
    
print(data.head())
 

Комментарии:

1. я думаю, что объединение ответов — лучший ответ, потому что мы не знаем, хочет ли он удалить или заменить inf