#scikit-learn #sklearn-pandas #imputation #data-wrangling
#scikit-learn #sklearn-pandas #вменение #перебор данных
Вопрос:
ВСЕ,
в моих данных есть np.nan и np.infs. я хотел бы заменить их на 0, однако, когда я делаю следующее, я получаю следующую ошибку:
imputer = SimpleImputer(missing_values=np.nan, strategy='constant', fill_value=0)
features_to_impute = data_fe.columns.tolist()
data_fe[features_to_impute] = pd.DataFrame(imputer.fit_transform(data_fe[features_to_impute]),
columns=features_to_impute)
ValueError: Input contains infinity or a value too large for dtype('float64').
не уверен, как с этим справиться, кто-нибудь знает, как я могу обойти это, а также приписать информацию?
Ответ №1:
Если вы хотите заменить оба np.nan
и np.inf
на 0
, просто используйте np.nan_to_num
Пример:
a = np.array([[1, 2, np.nan, 5],
[-np.inf, 9,3,np.nan],
[8, np.inf, np.nan,9]])
Out[441]:
array([[ 1., 2., nan, 5.],
[-inf, 9., 3., nan],
[ 8., inf, nan, 9.]])
b = np.nan_to_num(a, nan=0, posinf=0, neginf=0)
Out[444]:
array([[1., 2., 0., 5.],
[0., 9., 3., 0.],
[8., 0., 0., 9.]])
Итак, в вашем случае просто передайте выбранные столбцы фрейма данных в np.nan_to_num
np.nan_to_num(data_fe[features_to_impute], nan=0, posinf=0, neginf=0)