TransWikia.com

One Hot Encoder con columna ID que no debe ser tocada ni modificada, ¿cómo proceder en Python?

Stack Overflow en español Asked by emdikey on December 22, 2021

Tengo una tabla que posee varias columnas: ID, Género, Región, Nivel Educacional, Edad, Comuna, y otras 25 más, y más de 100 mil registros, que a continuación comparto con una imagen de ejemplo (no puedo colocar todas las columnas porque poseen datos sensibles)…

Muestra de datos del archivo CSV

Por lo tanto a la tabla debo hacer un "One Hot Encoder" a gran parte de las variables Objetos y Categóricos y a unas numéricas, pero a la columna ‘ID’ y a otras, como por ejemplo ‘Edad’, no se le debe aplicar el proceso, con el fin de poder crear un único archivo CSV con todas las columnas no transformadas y con las columnas resultantes del "One Hot Encoder" reemplacen a las columnas originales a las cuales se le aplicó.

Sé que se puede hacer con pandas.get_dummies pero no logro que todo quede en un mismo dataframe para luego guardar en un CSV nuevo.
Logro el One Hot Encoder con pandas, pero creando otro dataframe aparte con la instrucción…

cat_org = pd.get_dummies(dataframe[columns], drop_first = True, dummy_na = True)

donde ‘columns’ contiene las columnas que interesa aplicar el One Hot Encoder, pero no posee la columna ‘ID’ y temo que si junto con otra, se mezclen los datos y el resultado sea inservible.
Puede que esté perdido o ahogándome en un baso de agua, pero no logro lo que requiero.

Se agradece muchísimo la ayuda.

One Answer

Casi lo tienes! Tan solo hay que pasar el DataFrame entero a get_dummies y las columnas que quiere en one-hot.


import pandas as pd

df = pd.DataFrame({'A': ['x', 'y', 'x'], 'B': ['z', 'u', 'z'],
                  'C': ['1', '2', '3'],
                  'D':['j', 'l', 'j']})

pd.get_dummies(df, columns=['A', 'B', 'D'])

Update

Como puedes ver la columna C en este caso podría ser tu ID y está manteniendo los número igual, después de la operación

Answered by Rubiales Alberto on December 22, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP