Search code examples
pythonmachine-learningdata-scienceone-hot-encoding

Trying to use LabelEncoder and OneHotEncoder into a Dataset with Multiple Columns


I'm trying to convert multiple columns which there are a bunch of data in categorical values; but i getting a error when i goes to use OneHotEncoder

My Dataframe

1) Separating the columns in X_census and Y_census (X_census contains categorical values):

X_census  = df[['workclass',
               'education',
               'marital-status',
               'occupation',
               'relationship',
               'race',
               'sex',
               'native-country']]

Y_census = df['income']

2) Treating categorical values from X_census with LabelEncoder:

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
X_1 = X_census.apply(le.fit_transform)
X_2 = X_1.to_numpy()

3) Now using OneHotEncoder into my X_2 to convert categorical to numerical values:

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer

oh = OneHotEncoder()
onehotencoder_census = ColumnTransformer(transformers=[('OneHot', oh, X_2[:])],remainder='passthrough')
X_census = onehotencoder_census.fit_transform(X_census) # Error appears here!

The Error


Solution

  • you can use pandas.get_dummies

    df = pd.DataFrame({"marital_status":['S','M','D','S','M','D','S','M','D'], "sex":["male","female","male","female","male","female","male","female","male"], "education":['grad','post-grad','grad','post-grad','grad','post-grad','grad','post-grad','grad'], "income":[125,135,120,110,90,150,180,130,110]})

    enter image description here

    pd.get_dummies(df)

    enter image description here