La primera tabla
En resumen: pd.read_csv carga un archivo CSV en una tabla (un DataFrame), y head, shape, info y describe muestran las filas, el tamaño, los tipos y los resúmenes antes de calcular nada.
Problema
«¿Cuántos pedidos tenemos?»
El gerente te manda orders.csv y pregunta cuántos pedidos hay y cuál es el promedio. La tentación es abrir el archivo, escribir mean() y devolver un número.
Pero todavía no sabes qué hay en el archivo. ¿Una fila es un pedido o una línea de un pedido? ¿Hay celdas vacías? ¿Los números son números o texto como «1,60 €»? La media de la columna equivocada da una respuesta equivocada que parece perfectamente seria.
Por eso el análisis empieza con un primer vistazo: qué hay en la tabla, antes de calcular con ella.
La idea
La tabla: read_csv
CSV es un archivo de texto con una tabla: la primera línea tiene los nombres de las columnas, y cada línea siguiente es un registro, con los valores separados por comas. Casi todos los sistemas te dan uno: la tienda, el banco, Excel.
pandas es la biblioteca de Python para tablas. pd.read_csv lee el archivo y devuelve un DataFrame: una tabla con nombres de columnas y, a la izquierda, un número para cada fila (el índice). head() muestra las primeras cinco filas:
import pandas as pd es la costumbre de todos: pandas se escribe pd. El archivo orders.csv está junto al código, con las demás tablas de la tienda: products.csv, customers.csv, order_items.csv, categories.csv y reviews.csv.
La última línea no tiene print, y aun así sale la tabla. Así funciona un notebook (Jupyter), donde escriben los analistas: el valor de la última línea se muestra solo.
La idea
Cuántos y qué: shape e info
shape es un par (filas, columnas). info() describe cada columna: cuántos valores tiene y de qué tipo:
Léelo de arriba abajo:
- 25 filas, 6 columnas. Ninguna columna está completamente vacía.
category_idtiene 24 valores de 25: un producto no tiene categoría.- Los tipos:
int64son enteros,float64decimales,strtexto. La fechaadded_ates texto: pandas no reconoce una fecha por sí solo. Ya llegaremos a eso.
Más precisamente, para curiosos
El tipo str es nuevo en pandas 3 (2026). En versiones anteriores y en muchos artículos el texto es object. El significado es el mismo: la columna contiene cadenas.
La idea
Los números en resumen: describe
describe() resume una columna numérica: cuántos valores, la media (mean), la dispersión (std), el más pequeño, el más grande y los tres cuartos (25 %, 50 %, 75 %):
El precio medio es 7,04 €, y el 50 % (la mediana, el precio de en medio) es 2,80 €. Es una gran diferencia: unos pocos productos caros (el juego de cuchillos de 39 €, la sartén de 24,90 €) suben la media. Dile al gerente que «nuestro producto cuesta 7 € en promedio» y se imaginará otra tienda.
Si usar la media o la mediana es cosa del módulo de estadística. Por ahora la regla es: mira las dos.
Míralo
Qué producto no tiene categoría
info() dijo que falta una categoría. Aquí está el producto:
La tarjeta de regalo no es comida ni es para el hogar. El hueco es información real, no un error del archivo. Su stock es 999: un marcador que significa «sin límite». Suma el stock del almacén y falseará el resultado.
Eso te da el primer vistazo: antes de la primera suma sabes qué no es lo que parece.
Pruébalo
Las líneas de pedido
¿Cuántas filas tiene order_items.csv y cuántas unidades de un producto hay en una línea, en promedio? Ponlas en rows y avg_qty.
Solución
import pandas as pd
items = pd.read_csv('order_items.csv')
rows = len(items)
avg_qty = items['quantity'].mean()rows = len(items) (152 filas) y avg_qty = items['quantity'].mean() (unas 2,41 unidades). items.shape es un par (152, 4), así que no sirve para rows. Una fila aquí es un producto en un pedido, no el pedido entero: hay 60 pedidos.
Ejercicio
Los pedidos más recientes
head() tiene un hermano: tail() muestra las últimas filas. Los dos aceptan cuántas filas quieres: head(10).
El archivo de pedidos está ordenado por fecha. Pon los últimos 4 pedidos en latest.
Solución
import pandas as pd
orders = pd.read_csv('orders.csv')
latest = orders.tail(4)
latestlatest = orders.tail(4): los pedidos 57–60, del 5 al 19 de octubre de 2026. Dos son nuevos, uno está pagado y otro enviado. Los más recientes todavía no están entregados, así que para la pregunta «cuánto entregamos» falsean las cifras si no los apartas.
Más precisamente, para curiosos
Un archivo exportado de Excel en muchos idiomas europeos usa punto y coma entre los valores y una coma en los números: 1,60. Entonces es pd.read_csv('file.csv', sep=';', decimal=','). El texto de programas antiguos a veces está en una codificación regional como Windows-1251: encoding='cp1251'. Una hoja de Excel se lee directamente con pd.read_excel, y una tabla de una base de datos con pd.read_sql (mira el curso Bases de datos y SQL).
Test
Ponte a prueba
Lecciones relacionadas
Sección «Lecciones relacionadas»- Continúa en: El arreglo de NumPy · Vectorización · Resúmenes y valores faltantes · Broadcasting: el número, la fila y la columna
- Ejercicios sobre el tema: Bienvenida