Я прочитал очень много сообщений по этому поводу и не могу найти свой ответ.
import pandas as pd
После импорта панд я читаю файл csv, используя pandas.read_csv. Файл csv содержит 32 столбца и ~ 280 000 строк.
data = pd.read_csv(path)
# Add unique index column to data
data = data.reset_index()
Затем я использую функцию pandas.dropna, чтобы мои данные не имели значений nan.
dropped_values = data.dropna(inplace=True)
print(dropped_value.dtypes)
# returns all float64 types
Также проверил это из популярного ответа с ответом
np.any(np.isnan(dropped_values))
# prints false
np.all(np.isfinite(dropped_values))
# prints true
, и все же я все еще получаю
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
...
ValueError Traceback (most recent call last)
<ipython-input-75-f81bb23d00b2> in <module>
76
77
---> 78 for train_index, test_index in strat_split.split(dropped_values,
dropped_values["time_attribute"]):
из строки с циклом for
strat_split = StratifiedShuffleSplit(n_splits=1, test_size=0.25, random_state=42)
dropped_values["time_attribute"] = pd.cut(dropped_values["Time"],
bins=[0., 35000, 70000, 105000, 140000, 175000., np.inf],
labels=[1, 2, 3, 4, 5, 6])
for train_index, test_index in strat_split.split(dropped_values, dropped_values["time_attribute"]):
strat_train_set = dropped_values.loc[train_index]
strat_test_set = dropped_values.loc[test_index]
Я также пытался вменять данные с помощью SimpleImputer, прежде чем попытаться вызвать StartifySplit. Кроме того, я пробовал много других вариантов дропна, найденных в комментариях других постов, и, похоже, ничего не работает.
Это не имеет смысла, потому что я просмотрел данные, напечатал типы данных, проверил, являются ли они нановыми или конечными, и все дает правильный ответ.
У всех естькакие-либо другие предложения, чтобы попробовать?
Обратите внимание, что я изменил имена переменных в своем посте, чтобы сделать его более универсальным. Если я случайно пропустил букву / символ, вероятно, это была просто ошибка при создании сообщения.