Estadistica Practica Para Ciencia De Datos Y Python High Quality May 2026
She started with the raw data—a 5GB CSV file. pandas loaded it with a groan.
import pandas as pd import numpy as np import matplotlib.pyplot as plt import scipy.stats as stats
df = pd.read_csv("clickstream.csv") print(df.describe())
The mean time on checkout page was 47 seconds. The median was 12 seconds. That was her first clue. A giant gap between mean and median meant outliers—people who left their laptop open for hours.
"So much for 'average user'," she said.
She plotted a histogram using seaborn:
import seaborn as sns
sns.histplot(df['time_on_checkout'], bins=50, log_scale=True)
plt.title("Time on Checkout: Log-normal distribution")
It wasn't a bell curve. It was log-normal. Most users left quickly, but a long tail of ghosts haunted the data. She started with the raw data—a 5GB CSV file
El científico de datos pragmático no memoriza ecuaciones; construye pipelines de validación:
La estadística práctica en Python no es más lenta ni más difícil. Es más honesta, más robusta y te salvará de tomar decisiones basadas en ruido.
¿Qué prueba estadística te ha salvado de un error costoso en producción? Cuéntamelo en los comentarios.
¿Quieres el notebook completo con todos los ejemplos? [Descárgalo aquí / Suscríbete al newsletter].
from statsmodels.stats.proportion import proportion_confint
successes = (df['sex'] == 'Male').sum() n = len(df) ci_prop = proportion_confint(successes, n, alpha=0.05, method='wilson') print(f"Proportion of males CI: ci_prop")
La estadística práctica no es un obstáculo; es el superpoder que transforma código en insights.
Dominar la limpieza de datos con IQR, entender la diferencia entre Pearson y Spearman, y saber cuándo aplicar un T-Test, te coloca un escalón por encima de quienes solo ejecutan model.fit() sin entender la entrada.
Siguientes pasos recomendados:
¿Te ha resultado útil esta guía? Déjame un comentario con tus dudas o comparte cómo aplicas estadística en tus proyectos diarios. ¡Suscríbete para más contenido de alta calidad sobre Ciencia de Datos!
She switched from frequentist statistics to Bayesian. Instead of p-values, she wanted probabilities: Given an error, what's the probability the user leaves?
She used PyMC to build a Bayesian model of abandonment. The mean time on checkout page was 47 seconds
import pymc as pmwith pm.Model() as abandonment_model: # Prior: baseline conversion rate is 2% base_rate = pm.Beta('base_rate', alpha=2, beta=98)
# Effect of error: could increase abandonment (negative effect on purchase) error_effect = pm.Normal('error_effect', mu=0, sigma=1) # Logistic regression logit_p = pm.math.logit(base_rate) + error_effect * df['error_occurred'] p = pm.math.invlogit(logit_p) # Likelihood observed = pm.Bernoulli('observed', p=p, observed=df['purchased']) trace = pm.sample(2000, return_inferencedata=False)
The posterior distribution showed that error_effect was negative with 97% probability. The mean effect: an error reduced purchase probability by 8.3%.
But 8% didn't explain the 78% drop.
El bootstrap es mágico: remuestrea tus datos para estimar la variabilidad de cualquier estadístico, sin asumir normalidad. It wasn't a bell curve
def bootstrap_ci(data, estadistico=np.mean, n_boots=10_000, ci=95):
"""Calcula intervalo de confianza bootstrap para cualquier estadístico"""
estimaciones = []
n = len(data)
for _ in range(n_boots):
muestra = np.random.choice(data, size=n, replace=True)
estimaciones.append(estadistico(muestra))
lower = np.percentile(estimaciones, (100 - ci) / 2)
upper = np.percentile(estimaciones, 100 - (100 - ci) / 2)
return lower, upper