Primeros pasos en Python para estadística
Lo mínimo de pandas para importar, explorar y describir una base, y cuándo conviene Python en vez de R.
1 · Python o R
Los dos hacen lo mismo para estadística descriptiva e inferencia básica. La diferencia está en el entorno:
| R | Python | |
|---|---|---|
| Fuerte en | Estadística, gráficos, informes | Datos a escala, automatización, integración |
| Ecosistema | Paquetes estadísticos muy completos | Todo lo demás también |
| Curva inicial | Más corta para análisis | Más corta si ya programás |
| En la academia | Dominante en ciencias sociales y salud | Dominante en ingeniería y datos |
Lo importante es elegir uno y aprenderlo bien. Los conceptos se transfieren.
2 · Lo mínimo que hay que instalar
La forma más simple es Anaconda, que trae Python y las librerías de datos
juntas. La alternativa liviana es Python oficial más pip install pandas matplotlib scipy.
Para trabajar, dos opciones:
- Jupyter Notebook: código y resultados intercalados. Cómodo para explorar.
- Un script
.pyen cualquier editor. Mejor para procesos que se repiten.
3 · Las tres librerías
import pandas as pd # datos en tablas
import numpy as np # cálculo numérico
import matplotlib.pyplot as plt # gráficos
Esos tres alias —pd, np, plt— son convención universal. Conviene
respetarlos: todo el código que vas a encontrar los usa.
pandas es el equivalente del data frame de R. Un DataFrame es una
matriz de datos: filas de casos, columnas de
variables.
4 · El flujo completo
# 1 · Importar
datos = pd.read_csv("ingresos-eph.csv")
# 2 · Mirar qué llegó
datos.shape # filas y columnas
datos.info() # tipo de cada columna y cuántos no nulos
datos.head()
datos.describe()
# 3 · Descriptivos
datos["ingreso_ocup_principal"].mean()
datos["ingreso_ocup_principal"].median()
datos["ingreso_ocup_principal"].std()
datos["ingreso_ocup_principal"].quantile([0.25, 0.5, 0.75])
# 4 · Una variable categórica
datos["nivel_ed"].value_counts()
datos["nivel_ed"].value_counts(normalize=True).mul(100).round(1)
# 5 · Por grupo
datos.groupby("sexo")["ingreso_ocup_principal"].agg(["median", "count"])
# 6 · Gráficos
datos["ingreso_ocup_principal"].plot.hist(bins=20)
datos.boxplot(column="ingreso_ocup_principal", by="sexo")
# 7 · Con ponderadores
np.average(datos["ingreso_ocup_principal"], weights=datos["ponderador"])
5 · Las cuatro cosas que confunden al principio
Los índices arrancan en cero. datos.iloc[0] es la primera fila. Viniendo de
R o de Excel, es el ajuste más molesto.
.loc y .iloc. .loc selecciona por etiqueta, .iloc por posición. Es la
fuente de errores más común de pandas.
pandas ignora los faltantes en silencio. .mean() los saltea sin avisar,
al revés que R. Hay que acordarse de mirar .isna().sum().
.std() de pandas usa y np.std() usa . Dos librerías que se
usan juntas, con defaults distintos. Ver
por qué n−1.
6 · Para inferencia
pandas describe; para pruebas de hipótesis hacen falta otras librerías:
from scipy import stats
stats.ttest_ind(grupo_a, grupo_b, equal_var=False)
stats.chi2_contingency(tabla)
import statsmodels.formula.api as smf
modelo = smf.ols("ingreso ~ edad + C(sexo)", data=datos).fit()
modelo.summary()
scipy para pruebas puntuales, statsmodels para modelos con salida estadística completa —la que se parece a la de R o SPSS—.
7 · Errores frecuentes
- Usar
scikit-learnpara inferencia. No da lo que hace falta. - Confundir
.loccon.iloc. - No revisar los faltantes, porque pandas no avisa.
- Mezclar
np.std()con.std()y comparar los resultados. - Trabajar solo en notebooks sin orden de celdas. Un notebook ejecutado salteado deja de ser reproducible. Conviene correrlo de arriba abajo antes de dar por bueno un resultado.
- Rutas absolutas. Igual que en R.
SettingWithCopyWarningignorado. Ese aviso indica que estás modificando una vista y no el original; la modificación puede perderse. Se resuelve con.copy().
Herramientas de este tema
- ScriptProyecto reproducible (R y Python)· en preparación
Cómo citar esta entrada
APA (7.ª edición)
Montivero, J. L. (2026). Primeros pasos en Python para estadística. estadistica.ar. https://estadistica.ar/conceptos/primeros-pasos-en-python
BibTeX
@misc{estadistica_ar_primeros_pasos_en_python,
author = {Montivero, Jorge Luis},
title = {{Primeros pasos en Python para estadística}},
year = {2026},
howpublished = {\url{https://estadistica.ar/conceptos/primeros-pasos-en-python}},
note = {estadistica.ar. Consultado el \today},
urldate = {2026-09-18}
}Última actualización: 18 de septiembre de 2026. El contenido está bajo licencia CC BY-NC-SA 4.0: se puede reutilizar citando la fuente y sin fines comerciales.