Pensamiento Computacional (090) · Unidad 6 — Bibliotecas de Python
Pandas y DataFrames
Un DataFrame es una tabla con nombres de columna. Sirve para trabajar con datos reales: leer un CSV, filtrar filas, sacar promedios.
La explicación
La tabla
df = pd.DataFrame({
"nombre": ["ana", "luis", "sol"],
"nota": [9, 4, 7]
})
0 ana 9
1 luis 4
2 sol 7
Cada columna tiene nombre y todas sus celdas son del mismo tipo. Las filas se numeran solas.
Mirar
df.shape (filas, columnas)
len(df) cuántas filas
df.columns los nombres de las columnas
df.describe() estadísticas de las columnas numéricas
df.head() es lo primero que se hace siempre con un archivo nuevo: mirar qué tiene
antes de programar sobre él.
Una columna
df["nota"].mean() el promedio
df["nota"].max() el máximo
df["nota"].sum() la suma
Una columna funciona como un array de NumPy: df["nota"] * 2 duplica todas las notas
de una.
Filtrar filas
df["nota"] >= 7 no devuelve las notas: devuelve
una columna de True/False, una por fila. Y df[...] se
queda con las filas donde dio True.Para combinar condiciones se usa
& y | en vez de
and y or, y cada condición va entre paréntesis:
Archivos CSV
df.to_csv("salida.csv", index=False) guardar
Un CSV es un archivo de texto con valores separados por comas, y es el formato estándar para
datos. Compará esto con la unidad 5: lo que allá eran diez líneas con open,
strip y split, acá es una sola — y encima convierte los tipos solo.
El index=False al guardar evita que agregue una columna extra con los números de
fila, que casi nunca se quiere.
Un archivo notas.csv tiene columnas nombre y nota. Escribir el código que muestre cuántos aprobaron y el promedio de los aprobados.
df = pd.read_csv("notas.csv")
print(df.head()) # mirar antes de programar
aprobados = df[df["nota"] >= 7]
print("Aprobaron:", len(aprobados))
print("Promedio:", aprobados["nota"].mean())
Con la tabla de ana (9), luis (4) y sol (7): aprobaron 2, y el promedio de ellos es (9 + 7) / 2 = 8.0.
head() antes de todo. Los nombres de las columnas de un archivo
real casi nunca son los que uno imagina: pueden tener mayúsculas, acentos o espacios
("Nota Final" en vez de "nota"). Si programás a ciegas, el
KeyError aparece recién al correr. Mirar primero cuesta dos segundos.
Compará con hacer lo mismo a mano, como en la unidad 5: abrir el archivo, saltear el encabezado, separar cada línea por comas, convertir la nota, acumular... quince líneas, y todas con posibilidad de error. Para eso existen las bibliotecas.
Control: len(aprobados) nunca puede ser mayor que len(df), y
el promedio de los aprobados tiene que ser mayor o igual que 7. Si no, el filtro está mal.
Dónde se cae la mayoría
- Combinar condiciones con and en vez de &, o sin paréntesis alrededor de cada una.
- Programar sobre un CSV sin haber mirado antes df.head(): los nombres de columna casi nunca son los que uno supone.
- Guardar con to_csv sin index=False y que aparezca una columna de más.
Hasta acá la explicación. La práctica es la otra mitad: 7 ejercicios de este tema, en cuatro niveles, que no te dicen sólo si está bien al final sino que te corrigen en cada paso y te explican por qué. Además trae una animación que muestra la idea en movimiento.
Practicar Pandas y DataFrames →