Я пытаюсь кодировать несколько столбцов, содержащих категориальные данные ("Yes"
и "No"
) в большом кадре данных панд. Полный блок данных содержит более 400 столбцов, поэтому я ищу способ кодирования всех желаемых столбцов без необходимости их кодирования один за другим. Я использую Scikit-learn LabelEncoder
для кодирования категориальных данных.
Первая часть фрейма данных не должна быть закодирована, однако я ищу способ кодирования всех нужных столбцов, содержащих категориальную дату, непосредственно без разделения и конкатенации фрейма данных.
Чтобы продемонстрировать свой вопрос, я сначала попытался решить его на небольшой части фрейма. Однако застряли в последней части, где данные установлены и преобразованы, и получите значение ValueError: bad input shape (4,3)
. Код, который я запускал:
# Create a simple dataframe resembling large dataframe
data = pd.DataFrame({'A': [1, 2, 3, 4],
'B': ["Yes", "No", "Yes", "Yes"],
'C': ["Yes", "No", "No", "Yes"],
'D': ["No", "Yes", "No", "Yes"]})
# Import required module
from sklearn.preprocessing import LabelEncoder
# Create an object of the label encoder class
labelencoder = LabelEncoder()
# Apply labelencoder object on columns
labelencoder.fit_transform(data.ix[:, 1:]) # First column does not need to be encoded
Полный отчет об ошибке:
labelencoder.fit_transform(data.ix[:, 1:])
Traceback (most recent call last):
File "<ipython-input-47-b4986a719976>", line 1, in <module>
labelencoder.fit_transform(data.ix[:, 1:])
File "C:\Anaconda\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py", line 129, in fit_transform
y = column_or_1d(y, warn=True)
File "C:\Anaconda\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 562, in column_or_1d
raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (4, 3)
Кто-нибудь знает как это сделать?