No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Análisis de resultados

13/22
Recursos

Aportes 15

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Voy a facilitar un código más simple para la transformación de las variables categóricas

  1. Hago un dataframe solo de variables categóricas selecciono todas las variables categóricas.
categorical = consolidado[consolidado.columns[consolidado.dtypes==object].tolist()]
  1. Paso todo el dataset categórico por pd.get_dummies() para que transforme todas las variables y tengamos un dataset de variables dummy.
mask = pd.get_dummies(categorical)
  1. Elimino del dataset original las variables categóricas que hemos convertido a dummies.
columns = categorical.columns.tolist()
consolidado.drop(columns, axis=1, inplace=True)
  1. Finalmente concateno el dataset original con que contiene todas las variables categóricas transformadas.
df = pd.concat([consolidado, mask],axis=1)

En el minuto 10:58, una forma más simple de evaluar la cantidad de valores distintos (con Pandas) es:

objects_list = list(types[types.values == 'object'].index)
consolidado[objects_list].nunique()

La última línea de código da como resultado la lista de valores distintos de cada columna.

fecha_actividad     411
char_1                2
char_2                3
date               1196
char_3               43
char_4               25
char_5                9
char_6                7
char_7               25
char_8                8
char_9                9
dtype: int64

De igual manera, una forma más simple de hacer el one hot encoding para ‘char_6’ sería:

mask = pd.get_dummies('char_6'+'_'+consolidado.char_6)

Sin embargo, no está de más saber como realizar esto usando Scikit-Learn, que a final de cuentas es de lo que se trata el curso.

Por qué no podemos simplemente aplicar un slice en vez de un encoder? Los features tienen como valor ‘type 1’, ‘type 7’, etc, si le aplicamos un slice start=5, solo nos quedaría ‘1’ y ‘7’ por ejemplo y son valores numéricos… Sería lo mismo que hicimos con los features como ‘group’.
Alguna razón para cambiar de estrategia o es solo didáctico para aprender diferentes maneras de transformar variables categóricas a numéricas?

No siempre en tus valores los datos de tipo string van a estar al inicio, pueden estar al final o incluso mezclados con lo que la funcion slice no siempre seria util, encontre una manera mas eficaz a mi parecer de hacer esto,usando el metodo apply y ejecutando una funcion que te retorna solo los enteros.Lo mejor es que esta funcion se puede reutulizar para cualquier columna.

def only_numbers(objecto):
  output = ""
  for x in list(objecto):
    try:
      if type(int(x)) == int:
        output += x
    except ValueError:
      pass
  return int(output) 

consolid["people_id"] = consolid["people_id"].apply(only_numbers)```

El comando Series.dt.week fue retirado, ahora se recomienda usar

consolidado['semana'] = consolidado['date_y'].dt.isocalendar().week

Usa este codigo si te aparece en error al ejecutar el codigo del minuto 2:00, si te aparece que no lee tipo_actividad como string u object.

consolidado['tipo_actividad'] = consolidado['tipo_actividad'].astype(str)

Una manera de hallar los días es usar “lambdas”.

consolidado['date'] = consolidado['date'].apply(lambda x: x.day)

por que de str no pasamos a entero directamente???

Gracias por la función de transformación de variables categóricas a números enteros

Para seleccionar los datos categoricos es mas sencillo usar:
consolidado.select_dtypes(include=“object”)

y si queremos todos menos los categoricos usamos

consolidado.select_dtypes(exclude=“object”)

Es mas sencillo hacer:
consolidado.activity_id.str[4:] y asi para cada uno de los valores de tipo categorico

Para los que quieren evitarse el codigo de profesor en el minuto 2 ,pueden usar lambda y split así:

¿Hay alguna razón por la cual se quieran todos los features como enteros?

Les comparto el mi notebook de la transformacion de datos, antes de empezar tranforme los archivos de csv a parquet.
Una manera sencilla de hacerlo puede ser primero importando el csv con pandas y exportarlos como parquet

df = pd.read_csv(file)
df.to_parquet(file.parquet)

https://drive.google.com/file/d/13k7TQh8de0SfL8q3IGGBTychg6mvMFmp/view?usp=sharing

A que se debe que aparezca este error?

![](