Estadística Descriptiva
La estadística descriptiva es el lenguaje universal del análisis de datos. Cuando decís "el ingreso mediano es $350K con una desviación de $120K", cualquier analista del mundo entiende exactamente qué significa. Sin estadística, estás mirando números sin contexto. Con ella, estás contando la historia detrás de los datos.
Concepto teórico
Las 3 preguntas fundamentales
Toda estadística descriptiva responde una de estas tres preguntas:
- ¿Cuál es el centro de los datos? → Medidas de tendencia central (media, mediana, moda)
- ¿Qué tan dispersos están? → Medidas de dispersión (rango, varianza, desviación estándar)
- ¿Cómo se distribuyen? → Forma de la distribución (asimetría, percentiles, outliers)
Medidas de tendencia central
| Medida | Calcula | pandas | Cuándo usarla |
|---|---|---|---|
| Media (promedio) | Suma / cantidad | .mean() |
Datos simétricos sin outliers |
| Mediana | Valor del medio al ordenar | .median() |
Datos con outliers o asimétricos |
| Moda | Valor más frecuente | .mode() |
Datos categóricos |
Medidas de dispersión
El centro no cuenta toda la historia. Dos ciudades pueden tener el mismo ingreso promedio ($400K), pero en una todos ganan entre $350K-$450K y en otra van desde $50K hasta $2M. La dispersión mide esa "anchura".
| Medida | Calcula | pandas | Interpretación |
|---|---|---|---|
| Rango | max − min | .max() - .min() |
Amplitud total (afectado por outliers) |
| Varianza | Promedio de distancias² al centro | .var() |
Dispersión en unidades² (difícil de interpretar) |
| Desv. estándar (σ) | √varianza | .std() |
Dispersión en las mismas unidades que los datos |
| IQR | Q3 − Q1 (rango intercuartílico) | .quantile(.75) - .quantile(.25) |
Dispersión del 50% central (robusto a outliers) |
Percentiles y la regla del box plot
Los percentiles (o cuantiles) dividen tus datos ordenados en porciones iguales:
- Q1 (25%): el valor por debajo del cual está el 25% de los datos
- Q2 (50%) = Mediana: el punto medio
- Q3 (75%): por debajo del cual está el 75%
- IQR = Q3 - Q1: el rango donde vive el 50% central de los datos
La regla clásica para detectar outliers usa el IQR:
- Outlier por abajo: valor < Q1 − 1.5 × IQR
- Outlier por arriba: valor > Q3 + 1.5 × IQR
El superpoder: .describe()
El método df.describe() genera un resumen estadístico completo en una sola línea. Te da: count,
mean, std, min, 25%, 50%, 75% y max. Es lo primero que ejecutás cuando recibís un dataset nuevo.
df.shape (tamaño), df.dtypes (tipos),
df.isna().sum() (nulos), df.describe() (estadísticas). Con esas 4 líneas ya sabés el
80% de lo que necesitás saber.
Ejemplos explicados paso a paso
Ejemplo 1: Medidas de tendencia central
Comparar media vs mediana en un dataset con y sin outliers para entender cuándo usar cada una.
Hacé clic en ▶ Ejecutar
Ejemplo 2: Medidas de dispersión
Dos ciudades con el mismo ingreso promedio pero dispersión completamente distinta.
Hacé clic en ▶ Ejecutar
Ejemplo 3: .describe() — El resumen automático
Una sola línea que te da el panorama completo. Es lo primero que ejecutás cuando recibís un dataset nuevo.
Hacé clic en ▶ Ejecutar
Ejemplo 4: Percentiles y detección de outliers
Usando la regla del IQR para detectar automáticamente valores atípicos que podrían distorsionar tu análisis.
Hacé clic en ▶ Ejecutar
Ejemplo 5: Estadísticas por grupo (groupby + describe)
El patrón más poderoso: calcular estadísticas descriptivas segmentadas por categoría. Ya no es "el promedio global" sino "el promedio de cada segmento".
Hacé clic en ▶ Ejecutar
Referencia rápida
| Método pandas | Estadístico | Tipo |
|---|---|---|
.mean() |
Media aritmética | Tendencia central |
.median() |
Mediana (P50) | Tendencia central |
.mode() |
Moda | Tendencia central |
.std() |
Desviación estándar | Dispersión |
.var() |
Varianza | Dispersión |
.min() / .max() |
Mínimo / máximo | Rango |
.quantile(p) |
Percentil p | Posición |
.describe() |
Resumen completo | Todo junto |
.value_counts() |
Frecuencia de valores | Distribución categórica |
.corr() |
Correlación entre columnas | Relación |
.skew() |
Asimetría | Forma |
Ejercicios
Ejercicio 1: Media y mediana
Calculá la media y la mediana de la columna "Saldo". Imprimí la mediana. Debe incluir
400000.
Hacé clic en ▶ Ejecutar
Ejercicio 2: Desviación estándar
Calculá la desviación estándar del saldo redondeada a entero. Debe incluir 212132.
Hacé clic en ▶ Ejecutar
Ejercicio 3: .describe() completo
Ejecutá .describe() sobre el DataFrame. El output debe incluir la palabra mean
(nombre de la fila de la media).
Hacé clic en ▶ Ejecutar
Ejercicio 4: Calcular cuantiles
Calculá Q1 (25%), mediana (50%) y Q3 (75%) de la columna "Ingreso". Imprimí Q3. Debe incluir
480000.
Hacé clic en ▶ Ejecutar
Ejercicio 5: Detectar outliers con IQR
Usá la regla IQR para encontrar outliers. Imprimí cuántos hay. Debe dar 1.
Hacé clic en ▶ Ejecutar
Ejercicio 6: value_counts para distribución categórica
Usá .value_counts() para contar cuántos clientes hay por Segmento. Imprimí el
resultado. Debe incluir Estándar.
Hacé clic en ▶ Ejecutar
Ejercicio 7: Media vs mediana — detectar asimetría
Calculá media y mediana de los salarios. Si media > mediana, imprimí "Asimetría positiva". Debe
incluir positiva.
Hacé clic en ▶ Ejecutar
Ejercicio 8: Estadísticas por grupo
Calculá media y desv. estándar de Saldo por Segmento usando .agg().
Imprimí el reporte. Debe incluir Premium.
Hacé clic en ▶ Ejecutar
Ejercicio 9: Correlación entre variables
Calculá la correlación entre Antigüedad e Ingreso usando .corr().
Imprimilo redondeado a 2 decimales. Debe incluir 0.98.
Hacé clic en ▶ Ejecutar
Ejercicio 10: Reporte estadístico ejecutivo
Generá un reporte completo: (1) describe() del saldo, (2) ¿Cuántos outliers hay?, (3) Media con y sin
outliers, (4) Distribución por segmento. Debe incluir outlier.
Hacé clic en ▶ Ejecutar
Resumen y conexión
- Tendencia central: usá la media para datos simétricos y la mediana cuando hay outliers o asimetría.
- Dispersión: la desviación estándar (
σ) te dice qué tan "ancho" es tu dataset. Alto σ = mucha variabilidad. - .describe() es tu primera línea de defensa: te da el panorama en 1 segundo.
- Outliers: la regla del IQR (< Q1 − 1.5×IQR o> Q3 + 1.5×IQR) los detecta automáticamente.
- Si media > mediana → asimetría positiva (cola derecha). Si media < mediana → asimetría negativa.
- .corr() mide la relación lineal entre dos variables (de -1 a +1).
- Combiná estadísticas con groupby para segmentar el análisis por categoría.
En la siguiente lección (10 · Matplotlib básico) vas a aprender a convertir todos estos números en visualizaciones claras y profesionales. Porque un gráfico bien hecho comunica en 2 segundos lo que una tabla de números tarda 2 minutos.
Recursos: pandas docs — Calculate statistics