lección 1
Instalar Pandas y tu primer DataFrame
Setup de Pandas, verificación y primeros pasos con el DataFrame: Excel con superpoderes.
⏱ 55 min
### El problema: datos que no caben en tu cabeza
Imagina esto: tu jefa te pasa un CSV con 50.000 filas de transacciones del último trimestre. Necesita un resumen por categoría antes de las 5. Podrías abrir Excel, esperar 30 segundos a que cargue, hacer filtros manuales, copiar-pegar subtotales... o podrías escribir 5 líneas de Python y tenerlo en 2 segundos. Esa es la diferencia que marca Pandas.
Pandas es la librería que transformó Python de "un lenguaje de programación más" al estándar de facto para manipulación de datos. Fue creada en 2008 por Wes McKinney cuando trabajaba en un hedge fund y estaba harto de las limitaciones de Excel y R para análisis financiero. La idea central es brutal en su simplicidad: ¿y si pudiéramos trabajar con tablas de datos en Python con la misma facilidad que en una hoja de cálculo, pero con la potencia de un lenguaje de programación?
Piensa en Pandas como Excel con superpoderes. En Excel tienes filas y columnas, puedes filtrar, ordenar, hacer fórmulas. Pandas hace exactamente lo mismo pero: sin límite de filas (bueno, hasta que se acabe la RAM), reproducible (un script que puedes ejecutar mil veces), automatizable (puede correr solo cada noche) y combinable con el resto del ecosistema Python. Eso es un DataFrame: una tabla en memoria con nombre de columnas, tipos de datos y un arsenal de métodos para transformarla.
### Paso 1: Instalar Pandas
Vamos al grano. Asegúrate de tener tu entorno virtual activado (lo creamos en la Skill 3). Si no lo recuerdas: un entorno virtual es como una habitación limpia donde instalas solo lo que necesitas para un proyecto, sin contaminar el Python del sistema.
1# Activar el entorno virtual (si no lo tienes activo)2# En Windows:3.venv\Scripts\activate4# En Mac/Linux:5source .venv/bin/activate67# Instalar Pandas (incluye NumPy como dependencia)8pip install pandas==2.2.2910# Verificar la instalación11python -c "import pandas; print(pandas.__version__)"12# Salida esperada: 2.2.2
Instalación de Pandas con versión fija — siempre fija versiones en proyectos reales
Consejo de senior: SIEMPRE fija las versiones de tus dependencias (pandas==2.2.2, no solo pandas). Tu yo del futuro te lo agradecerá cuando un pip install no rompa todo porque salió una versión nueva con cambios incompatibles. Esto me pasó en 2019 con pandas 1.0 y fue una semana de horror.
Cuando instalas Pandas, pip también instala NumPy automáticamente (es una dependencia). NumPy es la librería de cálculo numérico sobre la que Pandas está construida. No necesitas saberlo todo sobre NumPy ahora, pero es bueno saber que está ahí debajo haciendo el trabajo pesado.
### Paso 2: Tu primer DataFrame — el "Hola Mundo" de Pandas
Un DataFrame es una tabla. Punto. Tiene filas (registros) y columnas (campos), igual que una tabla SQL o una hoja Excel. La diferencia es que vive en la memoria de Python y puedes manipularlo con código. Vamos a crear uno desde cero:
1import pandas as pd23# Crear un DataFrame desde un diccionario4ventas = pd.DataFrame({5 'producto': ['Laptop', 'Mouse', 'Teclado', 'Monitor', 'Webcam'],6 'categoria': ['Electrónica', 'Periféricos', 'Periféricos', 'Electrónica', 'Periféricos'],7 'precio': [1200, 25, 45, 350, 60],8 'unidades_vendidas': [150, 2000, 800, 300, 500]9})1011# Ver las primeras filas12print(ventas)13print(f"\nForma: {ventas.shape}") # (filas, columnas)14print(f"Columnas: {list(ventas.columns)}")
Tu primer DataFrame: una tabla de ventas de productos
La convención universal es importar pandas como pd. Verás esto en el 99% del código Python de datos del mundo. Es como decir "a partir de ahora, cuando diga pd me refiero a pandas". Menos tecleo, mismo resultado.
### Anatomía de un DataFrame
### Operaciones básicas: seleccionar, filtrar, agregar
Ahora que tienes una tabla en memoria, vamos a hacer con ella lo que harías en SQL: seleccionar columnas, filtrar filas y calcular agregados. La sintaxis es distinta pero la lógica es la misma.
1import pandas as pd23ventas = pd.DataFrame({4 'producto': ['Laptop', 'Mouse', 'Teclado', 'Monitor', 'Webcam'],5 'categoria': ['Electrónica', 'Periféricos', 'Periféricos', 'Electrónica', 'Periféricos'],6 'precio': [1200, 25, 45, 350, 60],7 'unidades_vendidas': [150, 2000, 800, 300, 500]8})910# SELECCIONAR una columna (como SELECT columna FROM tabla)11print(ventas['producto'])1213# FILTRAR filas (como WHERE)14caros = ventas[ventas['precio'] > 100]15print(caros)1617# AGREGAR (como GROUP BY + SUM)18por_categoria = ventas.groupby('categoria')['precio'].mean()19print(por_categoria)2021# Crear columna calculada22ventas['ingresos'] = ventas['precio'] * ventas['unidades_vendidas']23print(ventas[['producto', 'ingresos']].sort_values('ingresos', ascending=False))
Seleccionar, filtrar, agregar y calcular — las 4 operaciones fundamentales
Si vienes de SQL, piensa así: df[columna] es SELECT, df[condición] es WHERE, df.groupby() es GROUP BY, df.sort_values() es ORDER BY, df.head(n) es LIMIT. La traducción es casi directa. Y para "Top N por una columna" tienes un atajo: df.nlargest(5, "columna") es más limpio que sort_values + head, y deja claro qué estás buscando.
### Inspeccionar tus datos: los primeros 30 segundos
Cada vez que cargues un dataset nuevo (y lo harás cientos de veces), lo primero es inspeccionarlo. Estos son los 5 métodos que ejecutarás SIEMPRE antes de hacer nada más:
1# Los 5 métodos de inspección que usarás siempre2# Ojo: en un cuaderno Jupyter basta escribir df.head() y se muestra sola.3# En un script hay que poner print() — un script solo escribe lo que le mandas.4df = ventas56# 1. Primeras filas — ¿qué pinta tienen los datos?7print(df.head())89# 2. Forma — ¿cuántas filas y columnas?10print(f"Shape: {df.shape}")1112# 3. Tipos de dato — ¿los números son números?13print(df.dtypes)1415# 4. Resumen estadístico — ¿hay valores raros?16print(df.describe())1718# 5. Nulos — ¿falta información?19print(df.isnull().sum())
Los 5 comandos de inspección: head, shape, dtypes, describe, isnull
Pandas carga TODO en memoria RAM. Un CSV de 4GB necesita ~8-12GB de RAM para procesarse (Pandas usa ~2-3x el tamaño del archivo). Si tu portátil tiene 8GB de RAM y el archivo pesa 3GB, vas a tener problemas. Para esos casos existe PySpark (Skill 13). De momento, con archivos de hasta 1-2GB estarás bien.
### DataFrame vs Series: la diferencia clave
Un DataFrame es una tabla (2D). Una Series es una columna (1D). Cuando seleccionas una sola columna de un DataFrame, obtienes una Series. Cuando seleccionas varias, obtienes otro DataFrame. Es como la diferencia entre una fila de Excel y la hoja entera.
1# Esto devuelve una Series (1D)2precios = ventas['precio']3print(type(precios)) # <class 'pandas.core.series.Series'>45# Esto devuelve un DataFrame (2D)6subset = ventas[['producto', 'precio']]7print(type(subset)) # <class 'pandas.core.frame.DataFrame'>89# Las Series tienen métodos numéricos directos10print(f"Media: {precios.mean()}")11print(f"Máximo: {precios.max()}")12print(f"Suma: {precios.sum()}")
Series = una columna, DataFrame = tabla completa
### El fichero requirements.txt
En un proyecto real, no instalas dependencias a mano cada vez. Creas un archivo requirements.txt que lista todas las librerías con sus versiones. Cualquier persona del equipo puede replicar tu entorno con un solo comando.
1# Crear el requirements.txt2echo "pandas==2.2.2" > requirements.txt34# En el futuro, instalar todo de golpe:5pip install -r requirements.txt67# Para exportar TODO lo que tienes instalado:8pip freeze > requirements.txt
requirements.txt: la receta para replicar tu entorno
Consejo de senior: pip freeze incluye TODAS las dependencias (incluidas las sub-dependencias). Para un requirements.txt limpio, mantén uno manual con solo tus dependencias directas. Las sub-dependencias se resuelven solas. Esto te ahorrará conflictos de versiones en el futuro.
## ejercicios
Crear un DataFrame de empleados
Tu empresa tiene 6 empleados. Crea un DataFrame con columnas: nombre, departamento, salario, antiguedad_anios. Luego muestra solo los empleados del departamento "Ingeniería" con salario mayor a 40000.
💡 Resultado esperado
nombre departamento salario antiguedad_anios 0 Ana Ingeniería 55000 3 2 Lucía Ingeniería 62000 7 4 María Ingeniería 48000 4
Resumen por departamento para el CEO
El CEO quiere saber: ¿cuál es el salario medio y la antigüedad media por departamento? Usa groupby para calcularlo y ordena por salario medio descendente.
💡 Resultado esperado
salario antiguedad_anios departamento Ingeniería 55000.0 4.666667 Marketing 39500.0 5.500000
Calcular bonus anual
Recursos Humanos necesita calcular un bonus: 10% del salario multiplicado por los años de antigüedad. Crea la columna "bonus" y muestra el top 3 empleados con mayor bonus.
💡 Resultado esperado
nombre bonus 2 Lucía 43400.0 5 Jorge 24600.0 4 María 19200.0
Los 5 comandos de inspección
Tienes un DataFrame cargado. Escribe los 5 comandos de inspección que ejecutarías SIEMPRE antes de trabajar con datos nuevos: ver primeras filas, forma, tipos, estadísticas y nulos.
💡 Resultado esperado
id nombre ventas activo 0 1.0 Ana 1500.0 True 1 2.0 Carlos NaN True 2 3.0 NaN 3200.0 False
Regístrate para guardar tu progreso.
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...