4.3 · Data science : NumPy, pandas, Matplotlib

Nivel 4 · Especializaciones (Web, Data, IA, Automatización)

4.3Data science : NumPy, pandas, Matplotlib

Objetivo: Analizar datos con pandas (inspeccionar, filtrar, agregar) y mostrarlos con Matplotlib — para responder a una pregunta de negocio en 5 líneas en lugar de un día de hoja de cálculo.
Tiempo estimado: 15 min · lectura autónoma · Si solo tienes 5 min: lee «Lo esencial en 30s» + el esquema.

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.

Error frecuente de interpretación: « Más gráficos = mejor análisis ». No. Diez gráficos sin mensaje ahogan la conclusión que tres cifras bien elegidas habrían llevado. El análisis es responder a UNA pregunta con la prueba mínima ; el gráfico solo es la última etapa — mostrar — después de inspeccionar y agregar.
El método de análisis en 4 tiempos Cargar → inspeccionar → agregar → mostrar Cargar read_csv : el CSV sevuelve DataFrameInspeccionar head, info,describe, isna (huecos)Agregar groupby + sort : larespuesta cifradaMostrar 1 gráficotitulado = 1 mensaje
Cargar → inspeccionar → agregar → mostrar
Versión en texto del esquema (SEO / lectores de pantalla / traducción): 1) Nabil carga el CSV en un DataFrame con read_csv. 2) Inspecciona : head, info, describe, isna para detectar huecos y tipos. 3) Agrega con groupby y sort para obtener la respuesta. 4) Traza un gráfico con un título-mensaje. Lección : inspeccionar antes de analizar, vectorizar en lugar de iterar, mostrar un mensaje por gráfico.

¿Lo sabías?

pandas debe su nombre a « panel data », un término de econometría — no al oso.
Verdadero : la herramienta favorita de Nabil es un guiño de economista.

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

  1. Cargad un CSV con pd.read_csv e inspeccionad : head, info, describe, isna().sum() — anotad tipos y huecos.
  2. Limpiad lo mínimo vital : tipos de fechas/importes, valores faltantes señalados o tratados.
  3. Filtrad (df[condición]) y luego agregad (groupby + agg + sort) para responder a UNA pregunta precisa.
  4. Trazad 1 gráfico con un título-mensaje y luego relanzad todo el script de golpe para demostrar que es reproducible.
Respondéis a una pregunta de negocio con un script reproducible : inspeccionado, agregado, mostrado — en minutos en lugar de un día.

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.

Prudencia: Las cifras se verifican : inspeccionad siempre antes de concluir (un hueco o un tipo erróneo lo invalida todo) y difundid solo datos anonimizados fuera del círculo autorizado. Contenido pedagógico, ejemplos con datos ficticios.

✓ 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.

Lista de salida de la sección
  • Puedo citar NumPy, pandas/DataFrame, Matplotlib.
  • Sé inspeccionar y luego agregar un CSV.
  • Tengo 1 análisis reproducible con 1 gráfico-mensaje.
Autoevaluación 1-5 : ¿inspeccioné antes de concluir?¿se relanza mi script de golpe sin retoques?

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.

Comprueba tu comprensión

¿Cuál es la estructura central de pandas?

Recursos adicionales (opcional, para ir más allá)

Examen del nivel 4Preguntas inéditas y más difíciles para validar tus conocimientos