Входные данные содержат NaN, бесконечность или значение, слишком большое для dtype ('float64'), когда я масштабирую свои данные - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь нормализовать свои данные следующим образом:

scaler = MinMaxScaler()
trainX=scaler.fit_transform(X_data_train)

и я получаю эту ошибку:

ValueError: Вход содержит NaN, бесконечность или значение, слишком большое для dtype ('float64').

X_data_train представляет собой панду DataFrame размером (95538, 550). Что действительно странно, так это то, что когда я пишу

print (X_data_train.min().min())

это дает -5482.4473 и аналогично для максимума я получаю 28738212.0, что не кажется мне сверхвысокими значениями ...

Более того, основываясь на команде, данной 54+ проголосовавшим ответом , я проверил, что у меня нет NaN или Infinity точно. Более того, в моем csv или подобных вещах нет пробелов, так как я проверил размеры

Так в чем же проблема?

1 Ответ

0 голосов
/ 03 сентября 2018

Вы также можете проверить NaN s и inf:

df = pd.DataFrame({'B':[4,5,4,5,5,np.inf],
                   'C':[7,8,9,4,2,3],
                   'D':[np.nan,3,5,7,1,0],
                   'E':[5,3,6,9,2,4]})

print (df)
          B  C    D  E
0  4.000000  7  NaN  5
1  5.000000  8  3.0  3
2  4.000000  9  5.0  6
3  5.000000  4  7.0  9
4  5.000000  2  1.0  2
5       inf  3  0.0  4

nan = df[df.isnull().any(axis=1)]
print (nan)
     B  C   D  E
0  4.0  7 NaN  5

inf = df[df.eq(np.inf).any(axis=1)]
print (inf)
     B  C    D  E
5  inf  3  0.0  4

Если хотите найти все индексы с хотя бы одним NaN с в строках:

print (df.index[np.isnan(df).any(axis=1)])
Int64Index([0], dtype='int64')

И столбцы:

print (df.columns[np.isnan(df).any()])
Index(['D'], dtype='object')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...