ValueError: невозможно использовать медианную стратегию с нечисловыми c данными - PullRequest
0 голосов
/ 05 августа 2020

Изображение показывает, что рабочий класс столбца преобразуется в числовое значение с использованием фиктивного значения, однако, когда я печатаю этот столбец, он все еще показывает dtype как объект 1 Я новичок в Data Science и учусь обрабатывать отсутствующие значения в Python версии 3.8. Я столкнулся с этой проблемой, и я не могу понять, что пошло не так. Проблема в том, что я создал макеты для столбца с именем «рабочий класс», одно из значений в этом столбце - «state-gov». Я создал макеты для этого столбца, и до тех пор код работал нормально. Однако, когда я начал вменять недостающие значения с помощью медианы, я получил следующую ошибку.

ValueError: невозможно использовать медианную стратегию с нечисловыми данными c: не удалось преобразовать строку в число с плавающей запятой: 'State-gov'

Пожалуйста, найдите код, из которого я создал манекены, прикрепленные к этому Вопросу. Заранее благодарю за помощь!

todummy_list = ['workclass', 'education', 'marital-status', 'occupation', 'relationship', 'race', 'sex', 'native-country']
def dummy_list(data_frame_features, todummy_list):
for x in todummy_list:
    dummies = pd.get_dummies(df[x], prefix=x, dummy_na=False)
    data_frame_features = data_frame_features.drop(x, 1)
    data_frame_features = pd.concat([df, dummies], axis=1)
return data_frame_features
 # filling the missing values with median
imp = SimpleImputer(missing_values='NAN', strategy='median', fill_value=None)
imp.fit(data_frame_features)
data_frame_features = pd.DataFrame(data=imp.transform(data_frame_features), columns=data_frame_features.columns)
print(f'\nRecalculated')
print(data_frame_features.isnull().sum().sort_values(ascending=False))

1 Ответ

0 голосов
/ 05 августа 2020

Эта ошибка возникает из-за того, что столбец вашего рабочего класса содержит «state-gov» (и, возможно, другие значения строкового типа), которые вы не можете вменять, используя среднее значение, поскольку вменение среднего значения работает только с данными numeri c. Похоже, что одна стратегия вменения, которую scikitlearn поддерживает для строковых значений, - это «most_frequent». Если это ваше желаемое поведение, вы можете использовать это:

imp = SimpleImputer(missing_values='NAN', strategy='median', fill_value=None)

Другой вариант - заполнить все эти значения NAN постоянным значением, в данном случае «работа из- домашний "например:

imp = SimpleImputer(missing_values='NAN', strategy='constant', fill_value="work-from-home")

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