Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Desafío: vamos a practicar (y solución de bug de selección)

Se debe tener en cuenta que, al momento de realizar el último ítem, se debe cambiar el tipo Object de la columna Aprobado por el tipo bool. Sin embargo, no es tan simple como agregar .astype(bool), ya que esto modificará todos los valores a True. Por lo tanto, se debe utilizar .str.strip() para convertir los valores a tipo str (sin espacios), y luego utilizar la función map para convertirlos a valores booleanos.

Codigo

url = 'https://gist.githubusercontent.com/ahcamachod/807a2c1cf6c19108b2b701ea1791ab45/raw/fb84f8b2d8917a89de26679eccdbc8f9c1d2e933/alumnos.csv'
df_alumnos = pd.read_csv(url, delimiter=',')

#Reemplazamos los valores erroneos llamados Verdadero a True, ademas de reemplazar los NaN por 0
df_alumnos['Aprobado'] = df_alumnos['Aprobado'].replace('Verdadero', True)
df_alumnos = df_alumnos.fillna(0)
df_alumnos.head(5)

# Creamos la columna Puntos_Extra que sera un 40% del valor de la Nota del alumno
df_alumnos['Puntos_Extra'] = df_alumnos['Nota'] * 0.4
df_alumnos.tail(5)

# Creamos la columna Notas_finales sumando la Nota y los Puntos Extra
df_alumnos['Notas_finales'] = df_alumnos['Nota'] + df_alumnos['Puntos_Extra']
df_alumnos.sample(5)

# Creamos la columna Aprobado_final para saber si algun alumno aprobo con los puntos extra
df_alumnos['Aprobado_final'] = df_alumnos['Notas_finales'].apply( lambda x: True if x >= 7.0 else False)

#Comprobamos resultado
df_alumnos.sample(5)

# Revisamos los tipos de datos con los que trabajamos
df_alumnos.dtypes

# Se utiliza map ya que solo vamos a trabajar con una columna, si fueran mas, es mejor utilizar apply
df_alumnos['Aprobado'] = df_alumnos['Aprobado'].str.strip().map(lambda x: True if x == "True" else False)
df_alumnos

#Revisamos que se haya modificado el tipo Object a Bool
df_alumnos.dtypes

#Creamos el filtro
filtro = df_alumnos.apply(lambda x: x['Aprobado'] == False and x['Aprobado_final'] == True, axis=1)
filtro

#Aplicamos el filtro
filtrados = df_alumnos[filtro]
filtrados

Resultado ultimo item

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

Hola , espero que estés muy bien.

Felicitaciones por tu aprendizaje. Estamos priorizando el foro para postear dudas, así optimizamos el tiempo de respuesta para ustedes.

Para no dejar de compartir los códigos, actividades y ejercicios que realizas, creamos un canal en Discord (#compartetucodigo) donde puedes compartirlos, dar y sugerir mejoras con el resto de tus compañeros.

Un saludo.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios