4.3Data science : NumPy, pandas, Matplotlib
Lo esencial en 30 segundos
- El trío : NumPy calcula rápido (arrays vectorizados), pandas manipula tablas (DataFrame), Matplotlib muestra (1 gráfico = 1 mensaje).
- Método de Nabil : inspeccionar primero (
head/info/describe/isna) y luego agregar (groupby + sort= 80 % de los informes) — nunca al revés. - Vectorizar, nunca iterar :
(df.montant * 1.2).mean()sustituye a los bucles, ×100 más rápido sobre un millón de filas.
Mini-caso hilado — Nabil responde en 5 líneas
La dirección pide a Nabil, en Argel : « ¿cuáles son nuestras 5 mejores ciudades este trimestre? » En lugar de un día ordenando en una hoja de cálculo, Nabil carga el CSV con pandas, inspecciona (head, info, isna para los huecos), agrega por ciudad con groupby y sort, y luego traza un gráfico de barras titulado. Respuesta entregada en una hora, reproducible el próximo trimestre relanzando el script. Tercer hito del hilo : el analista que responde rápido y demuestra lo que afirma.
Continuación de los casos 4.1-4.2 — Nabil analiza las ventas que expone.
1. NumPy : calcular rápido, pandas : manipular tablas
NumPy sustituye los bucles por arrays vectorizados calculados en C : (a * 1.2).mean() procesa un millón de filas de golpe — ×100 más rápido con ÷10 líneas de código. pandas es la hoja de cálculo programable : el DataFrame (tabla de filas/columnas) se carga (read_csv), se inspecciona (head, info, describe, isna), se filtra (df[df.ville == "Alger"]), se agrega (groupby(...).agg(...)) y se fusiona (merge). Nabil inspecciona SIEMPRE antes de analizar : tipos, valores faltantes y órdenes de magnitud primero — la limpieza es la etapa más larga y la más importante.
2. Matplotlib : mostrar, y el cuaderno Jupyter
Matplotlib transforma las cifras en mensaje : 1 gráfico = 1 mensaje, con un título que dice la conclusión (« Argel aporta el 40 % de la facturación » en lugar de « Facturación por ciudad »). df.plot() basta para explorar ; una figura cuidada (título, etiquetas, fuente) sirve para comunicar. El notebook Jupyter mezcla código, resultados y relato : ideal para explorar y contar el análisis paso a paso. Nabil retiene la regla : pandas sustituye a la hoja de cálculo para grandes volúmenes y lo reproducible ; la hoja de cálculo sigue perfecta para pequeños volúmenes visuales rápidos.
¿Lo sabías?
El oso solo es la mascota oficiosa de los analistas de datos.
🔎 Ejemplo concreto — 🔎 Ejemplo concreto — El top de ciudades de Nabil
El análisis completo de Nabil en 5 líneas :
df = pd.read_csv("ventes.csv")
print(df.info(), df.isna().sum()) # inspeccionar primero
top = df.groupby("ville")["montant"].sum().sort_values(ascending=False)
print(top.head()) # la respuesta cifrada
top.head().plot(kind="bar", title="CA por ciudad")
Lectura : inspeccionar → agregar → mostrar, en este orden.
Lección : groupby + sort = 80 % de los informes de actividad.
Vocabulario de la sección
- NumPy
- Biblioteca de cálculo sobre arrays vectorizados (operaciones en C) : sustituye a los bucles Python, ×100 más rápida sobre grandes volúmenes.
Ejemplo sencillo: Nabil aplica un descuento a un millón de importes en una línea.
Lo que no es: un bucle for que procesa las filas una por una.
Reflejo: en cuanto iteres sobre números, buscar la operación vectorizada.
- pandas / DataFrame
- Hoja de cálculo programable : el DataFrame (tabla de filas/columnas) carga, filtra, agrega y fusiona datos — read_csv, groupby, merge.
Ejemplo sencillo: Nabil agrega sus ventas por ciudad en dos líneas.
Lo que no es: ordenaciones manuales repetidas en una hoja de cálculo.
Reflejo: inspeccionar (head/info/isna) antes de todo análisis.
- groupby + agregación
- Agrupar las filas por categoría y luego resumir (suma, media) : el gesto que produce el 80 % de los informes.
Ejemplo sencillo: La facturación por ciudad de Nabil : groupby ciudad, suma de importes, ordenación.
Lo que no es: totales recalculados a mano con cada petición.
Reflejo: ¿pregunta por categoría? groupby primero.
- Matplotlib
- Biblioteca de gráficos : 1 gráfico = 1 mensaje, con un título que dice la conclusión.
Ejemplo sencillo: Nabil titula su gráfico de barras con la conclusión, no solo « Facturación por ciudad ».
Lo que no es: diez gráficos decorativos sin mensaje.
Reflejo: título-mensaje, etiquetas, fuente — si no, es decoración.
En la práctica — En práctica — Analizar un CSV de principio a fin
- Cargad un CSV con pd.read_csv e inspeccionad : head, info, describe, isna().sum() — anotad tipos y huecos.
- Limpiad lo mínimo vital : tipos de fechas/importes, valores faltantes señalados o tratados.
- Filtrad (df[condición]) y luego agregad (groupby + agg + sort) para responder a UNA pregunta precisa.
- Trazad 1 gráfico con un título-mensaje y luego relanzad todo el script de golpe para demostrar que es reproducible.
Guion listo para decir — presentar su análisis (30 s)
« Soy Nabil : cargué las ventas, inspeccioné los huecos y los tipos, y luego agregué por ciudad — Argel aporta lo esencial del trimestre. El script se relanza idéntico el próximo trimestre, y el gráfico dice la conclusión en su título. »
Para decir en revisión de actividad ; mostrad el gráfico, no el código.
Modelo copiar-pegar — análisis pandas (código probado)
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("ventes.csv")
# 1. Inspeccionar primero : tipos, huecos, órdenes de magnitud
print(df.head())
print(df.info())
print(df.describe())
print(df.isna().sum())
# 2. Filtrar : las ventas de Argel este trimestre
alger = df[df["ville"] == "Alger"]
# 3. Agregar : CA por ciudad, ordenado (80 % de los informes)
top = df.groupby("ville")["montant"].sum().sort_values(ascending=False)
print(top.head())
# 4. Mostrar : 1 gráfico = 1 mensaje
top.head().plot(kind="bar", title="Argel aporta lo esencial del CA")
plt.tight_layout()
plt.savefig("top-villes.png")
Archivo pequeño
¿Unos cientos de filas? La hoja de cálculo sigue más rápida — reservad pandas para lo reproducible.
Informe mensual
Como Nabil : un script que carga, inspecciona, agrega y exporta — relanzado cada mes sin tocarlo.
Millón de filas
Vectorizadlo todo (nunca for sobre las filas) : NumPy/pandas en C hacen en segundos lo que los bucles hacen en minutos.
Exploración libre
Trabajad en notebook Jupyter : código, resultados y relato lado a lado para buscar antes de concluir.
✓ Buenas prácticas
- Inspeccionar (head/info/describe/isna) antes de analizar.
- Vectorizar : ningún bucle sobre millones de filas.
- Un gráfico = un mensaje, título que concluye.
✗ Errores frecuentes
- Iterar en for sobre millones de filas.
- Analizar sin inspeccionar tipos y huecos.
- Multiplicar los gráficos sin mensaje.
Puntos clave
- TRÍO : NUMPY (cálculo vectorizado) / PANDAS (tablas) / MATPLOTLIB (gráficos).
- DATAFRAME = hoja de cálculo programable : read_csv, head, describe, groupby, merge.
- MÉTODO : inspeccionar → agregar → mostrar ; limpieza = etapa más larga.
- JUPYTER = relato de análisis ; 1 gráfico = 1 mensaje con título-conclusión.
Reto 48h — aplica mañana
Tomad 1 CSV real de vuestro trabajo : inspeccionadlo, responded a 1 pregunta con groupby y entregad 1 gráfico con título-mensaje.
- Puedo citar NumPy, pandas/DataFrame, Matplotlib.
- Sé inspeccionar y luego agregar un CSV.
- Tengo 1 análisis reproducible con 1 gráfico-mensaje.
Preguntas frecuentes
¿pandas sustituye a Excel?
Para grandes volúmenes y lo reproducible : sí — un script rehace en segundos lo que una hoja de cálculo rehace en horas, sin errores de copiar-pegar. Para pequeños volúmenes visuales y rápidos : no — la hoja de cálculo sigue imbatible. Nabil usa ambos : pandas para los informes mensuales, la hoja de cálculo para un vistazo.
¿Hay que ser fuerte en matemáticas para la data science?
No en esta etapa : bases de estadística (media, mediana, distribución) bastan para inspeccionar y agregar con pandas. Las matemáticas avanzadas (álgebra, probabilidad) se vuelven útiles en 4.4 para elegir y ajustar modelos de machine learning.
¿Cuál es la estructura central de pandas?