Ir al contenido
σestadistica.ar
M16 · CómputoIntermedioProcedimiento

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:

RPython
Fuerte enEstadística, gráficos, informesDatos a escala, automatización, integración
EcosistemaPaquetes estadísticos muy completosTodo lo demás también
Curva inicialMás corta para análisisMás corta si ya programás
En la academiaDominante en ciencias sociales y saludDominante 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 .py en 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 n1n-1 y np.std() usa nn. 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-learn para inferencia. No da lo que hace falta.
  • Confundir .loc con .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.
  • SettingWithCopyWarning ignorado. 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.