Skip to content
SISP Home
← Back to unit
CCPG1043 Unit 6

6.3 Soluciones — Unidad 06

Try the exercises yourself before checking these.

1–4. Creación

import numpy as np
import pandas as pd

notas = pd.Series([8.2, 6.5, 9.0], index=["E01", "E02", "E03"])

datos = {
    "nombre": ["Ana", "Luis", "Marta"],
    "carrera": ["Computación", "Mecánica", "Computación"],
    "semestre": [1, 2, 1]
}
tabla = pd.DataFrame(datos)

tabla_desde_lista = pd.DataFrame([8.2, 6.5, 9.0], columns=["nota"])

arreglo_notas = np.array([8.2, 6.5, 9.0])
tabla_desde_arreglo = pd.DataFrame(arreglo_notas, columns=["nota"])

5–7. Lectura y selección

estudiantes = pd.read_csv(
    "files/06-pandas/estudiantes.csv",
    sep=",",
    header=0,
    index_col="codigo"
)

estudiantes.info()
print(estudiantes.head(3))
print(estudiantes.tail(2))
print(estudiantes.loc["E03"])
print(estudiantes.iloc[2])
print(estudiantes[["nombre", "nota"]])
estudiantes["nota_porcentual"] = estudiantes["nota"] * 10

Coinciden porque E03 es la etiqueta de la tercera fila, cuya posición entera es 2.

8. Resúmenes y extremos

print(estudiantes["nota"].mean())
print(estudiantes["nota"].sum())
print(estudiantes["nota"].min())
print(estudiantes["nota"].max())
print(estudiantes["nota"].idxmin())
print(estudiantes["nota"].idxmax())

9–10. Filtros

seleccion = estudiantes[
    (estudiantes["nota"] >= 6) &
    (estudiantes["asistencia"] >= 0.80)
]

carreras = estudiantes[
    estudiantes["carrera"].isin(["Computación", "Mecánica"])
]

11. Reemplazo condicional

estudiantes["estado"] = "Aprobado"
estudiantes["estado"] = estudiantes["estado"].mask(
    estudiantes["nota"] < 6,
    "Reprobado"
)

12. Ordenamiento

ordenados = estudiantes.sort_values(
    ["carrera", "nota"],
    ascending=[True, False]
)

estudiantes.sort_values("nombre", inplace=True)

13–15. Valores, grupos y exportación

print(estudiantes["carrera"].unique())
print(estudiantes["carrera"].value_counts())

resumen = estudiantes.groupby("carrera")[["nota", "asistencia"]].mean()
print(resumen)
print("Mayor promedio:", resumen["nota"].idxmax())

estudiantes.to_csv("estudiantes_procesados.csv", index=True)