Tiza Las materias del CBC
Practicar →

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.

Practicar este tema →7 ejercicios que te corrigen paso a paso · gratis, sin cuenta

La explicación

La tabla

import pandas as pd

df = pd.DataFrame({
    "nombre": ["ana", "luis", "sol"],
    "nota": [9, 4, 7]
})
    nombre   nota
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.head()       las primeras 5 filas
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"]           la columna entera
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

aprobados = df[df["nota"] >= 7]
Se lee de adentro hacia afuera. 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:
df[(df["nota"] >= 7) & (df["nota"] < 10)]
Olvidar esos paréntesis es un error muy común y el mensaje que da no ayuda nada.

Archivos CSV

df = pd.read_csv("notas.csv")        leer
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.

Ejemplo resuelto

Un archivo notas.csv tiene columnas nombre y nota. Escribir el código que muestre cuántos aprobaron y el promedio de los aprobados.

import pandas as pd

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.

Por qué el 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

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 →

Ver todos los temas de Pensamiento Computacional