Кодировать только не числовой столбец в кадре данных - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть фрейм данных, который содержит числовые и нечисловые столбцы.Я хотел бы кодировать только нечисловые столбцы и сохранить значение числовых столбцов, как они есть.Когда я пытаюсь кодировать с помощью своего кода, он кодирует все столбцы.

Вы можете помочь решить эту проблему, пожалуйста?

Спасибо

Вот мой код Python

from sklearn.base import BaseEstimator
from sklearn.base import TransformerMixin
from sklearn.preprocessing import LabelEncoder

class CustomImputer(BaseEstimator, TransformerMixin):
    def __init__(self, strategy='mode',filler='NA'):
       self.strategy = strategy
       self.fill = filler

    def fit(self, X, y=None):
       if self.strategy in ['mean','median']:
           if not all(X.dtypes == np.number):
               raise ValueError('dtypes mismatch np.number dtype is \
                                 required for '+ self.strategy)
       if self.strategy == 'mean':
           self.fill = X.mean()
       elif self.strategy == 'median':
           self.fill = X.median()
       elif self.strategy == 'mode':
           self.fill = X.mode().iloc[0]
       elif self.strategy == 'fill':
           if type(self.fill) is list and type(X) is pd.DataFrame:
               self.fill = dict([(cname, v) for cname,v in zip(X.columns, self.fill)])
       return self

    def transform(self, X, y=None):
       return X.fillna(self.fill)

data3=CustomImputer(strategy='mode').fit_transform(data2)

1 Ответ

0 голосов
/ 06 февраля 2019

Вы ищете X.select_dtypes(np.number).

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