Manual de Pandas
Pandas es una libreria de Python para trabajar con datos tabulares en memoria. Es especialmente util para explorar datasets, limpiar informacion, transformar columnas, unir tablas, calcular agregaciones y preparar datos antes de cargarlos en una base de datos, un modelo de machine learning o un dashboard.
Pandas brilla cuando el volumen cabe razonablemente en memoria y necesitas iterar rapido. Si los datos son demasiado grandes, el trabajo deberia moverse a motores como PySpark, DuckDB, Polars, bases analiticas o pipelines distribuidos.
Capitulos previstos
- Introduccion y entorno
- Series y DataFrames
- Lectura y escritura
- Seleccion filtrado y transformacion
- Limpieza de datos
- GroupBy agregaciones y joins
- Fechas y series temporales
- Rendimiento
- Proyecto de analisis
Que es Pandas (y que no es)
Pandas es:
- Una API flexible sobre arrays de NumPy (y tipos Arrow en versiones recientes).
- Ideal para exploracion, limpieza y transformaciones tabulares.
- Rapido de prototipar en notebooks y scripts.
Pandas no es:
- Un motor columnar out-of-core como DuckDB (aunque puede combinar con el).
- Un cluster distribuido: todo vive en la RAM de un proceso.
- Un sustituto de SQL para consultas analiticas muy pesadas sobre Parquet masivo.
Regla practica: dataset que cabe en memoria y logica en Python -> Pandas. SQL analitico sobre archivos grandes sin cargar todo -> DuckDB. Escala horizontal -> Spark u otro motor distribuido.
Instalacion
python -m venv .venv
.venv\Scripts\activate
pip install pandas pyarrow openpyxlEn Linux o macOS, la activacion cambia:
source .venv/bin/activatepyarrow es importante para trabajar bien con Parquet y tipos modernos. openpyxl permite leer y escribir Excel.
Comprueba la version:
import pandas as pd
print(pd.__version__)Primer DataFrame
import pandas as pd
df = pd.DataFrame({
"customer_id": [1, 2, 3],
"country": ["ES", "PT", "ES"],
"amount": [120.5, 80.0, 310.0],
})
print(df)
print(df.dtypes)Leer un CSV:
orders = pd.read_csv("orders.csv")Inspeccion rapida:
orders.head()
orders.info()
orders.describe()
orders.isna().sum()Flujo de trabajo recomendado
leer datos
-> inspeccionar columnas, tipos y nulos
-> limpiar nombres y tipos
-> validar reglas basicas
-> transformar
-> agregar o unir
-> exportar resultadoEjemplo:
orders = (
pd.read_csv("orders.csv")
.rename(columns=str.lower)
)
orders["created_at"] = pd.to_datetime(orders["created_at"], errors="coerce")
orders["amount"] = pd.to_numeric(orders["amount"], errors="coerce")
summary = (
orders
.dropna(subset=["created_at", "amount"])
.groupby("country", as_index=False)
.agg(total_amount=("amount", "sum"), orders=("order_id", "nunique"))
)
summary.to_parquet("country_summary.parquet", index=False)Buenas practicas
- Revisa
dtypesnada mas cargar datos. - Convierte fechas y numeros explicitamente.
- Prefiere operaciones vectorizadas a bucles fila a fila.
- Usa Parquet para datasets intermedios cuando sea posible.
- Documenta reglas de limpieza, no las escondas en una celda perdida.
Errores comunes
- Tratar strings numericos como numeros sin convertirlos.
- Leer archivos grandes sin seleccionar columnas.
- Usar
applypara todo. - Ignorar zonas horarias en fechas.
- Encadenar transformaciones sin validar resultados intermedios.
Ejercicio
- Crea un CSV con columnas
order_id,country,amountycreated_at. - Cargalo con Pandas.
- Convierte
amounta numero ycreated_ata fecha. - Calcula ventas totales por pais.
- Guarda el resultado en Parquet.
Siguiente paso
Con el entorno listo, el capitulo 2 explica Series, DataFrames e indices: la base sobre la que se apoya el resto del manual.
