Calcular la varianza y desviación estándar en Python se vuelve sencillo cuando combinas pandas, numpy, matplotlib y seaborn sobre una base de datos real. Aquí aprenderás a hacerlo paso a paso usando el famoso dataset Iris, tanto para la población completa como para una muestra aleatoria, e interpretar los resultados frente al promedio.
Qué librerías necesitas para analizar varianza en Python
Antes de tocar los datos, importa las herramientas que harán todo el trabajo pesado.
- pandas as pd para manipular la tabla.
- numpy as np para cálculos numéricos.
- matplotlib.pyplot as plt para gráficos base.
- seaborn as sns para visualizaciones estadísticas.
Un detalle que puede frenarte: matplotlib se escribe con b, no con p. Si te equivocas, Python te marcará error de inmediato.
¿Para qué sirve seaborn frente a matplotlib? seaborn genera visualizaciones estadísticas más estéticas con menos código, como el displot que combina histograma y curva de densidad en una sola línea.
Cómo cargar el dataset Iris desde una URL
En lugar de descargar archivos, puedes leer el CSV directamente desde una URL con pandas. El dataset Iris no trae nombres de columnas, así que debes definirlos manualmente como un vector con cinco elementos: sepal length, sepal width, petal length, petal width y la clase de flor.
python
iris = pd.read_csv(url, names=names)
La longitud y el grosor del sépalo y del pétalo son variables numéricas, mientras que la clase es categórica e identifica el tipo de flor.
Cómo explorar la distribución antes de calcular la varianza
Visualizar la variable de interés es un paso obligatorio. Si los datos no siguen una distribución normal, la interpretación cambia.
Con iris.head() revisas los primeros registros y confirmas que sepal length tiene valores numéricos consistentes. Luego, un histograma rápido te muestra la forma de la distribución:
python
plt.hist(iris['sepal length'], color='orange', bins=185)
Para confirmar la normalidad, seaborn ofrece el displot con estimador de kernel density, una línea suave que une la distribución de puntos.
python
sns.displot(iris['sepal length'], hist=True, kde=True, bins=185, color='orange')
El resultado: una curva clásica con menos valores en los extremos y concentración en el centro, típica de una distribución normal.
Cómo calcular varianza y desviación estándar poblacional
Una vez validada la distribución, el cálculo se reduce a una línea de código por métrica.
Qué función usar en pandas para varianza
La función var aplicada sobre una columna devuelve la varianza directamente.
python
iris['sepal length'].var()
El resultado para la población completa es 0.68.
Cómo interpretar la desviación estándar con el promedio
La desviación estándar se obtiene con std, abreviatura de standard deviation.
python
iris['sepal length'].std()
El valor es 0.82. Pero un número aislado no dice mucho. Necesitas compararlo contra el promedio usando mean:
python
iris['sepal length'].mean()
El promedio es 5.84. Como 0.82 representa cerca del 20% del promedio, la desviación es significativa. Si tuvieras un promedio de 100 y una desviación de 1, esa misma cifra sería despreciable.
¿Cuándo una desviación estándar es alta o baja? Depende del promedio. Si la desviación supera el 15 o 20% del valor medio, los datos están dispersos. Si es menor al 5%, están concentrados.
Cómo crear una muestra aleatoria simple en pandas
Trabajar con muestras es clave cuando la población es enorme. pandas incluye la función sample para extraer una fracción aleatoria.
python
muestra = iris.sample(frac=0.5)
Esto toma el 50% de los registros de forma aleatoria. Cada ejecución produce una muestra distinta, así que tus números no coincidirán exactamente con los de otra persona.
Qué cambia entre varianza poblacional y muestral
Repites el procedimiento sobre la nueva tabla:
- Varianza muestral: muestra['sepal length'].var() devuelve aproximadamente 0.59.
- Desviación estándar muestral: muestra['sepal length'].std() devuelve cerca de 0.769.
- Promedio muestral: muestra['sepal length'].mean() ronda 5.7.
La varianza bajó de 0.68 a 0.59 y la desviación de 0.82 a 0.76. La conclusión se mantiene: como los valores siguen siendo cercanos a 1 frente a un promedio de aproximadamente 5.7, la dispersión es elevada.
¿Por qué la muestra da resultados distintos cada vez? Porque sample selecciona registros al azar. Si necesitas reproducibilidad, agrega el parámetro random_state con un número fijo.
Cómo interpretar correctamente los resultados
El flujo correcto siempre es el mismo: calcula varianza, calcula desviación estándar, obtén el promedio y compara.
- Si el promedio es alto y la desviación es pequeña en proporción, los datos están concentrados.
- Si el promedio es bajo y la desviación se acerca a 1, hay dispersión significativa.
- La varianza al cuadrado siempre será mayor que la desviación, que es su raíz cuadrada.
Este mismo análisis aplica a sepal width, petal length y petal width. Te dejo el reto: replica el procedimiento con las otras tres variables numéricas y compara cuál presenta mayor dispersión. ¿Qué variable crees que tendrá la varianza más alta? Cuéntame en los comentarios.