Ir al contenido
σestadistica.ar

estadistica.ar · Enciclopedia de Estadística en españolhttps://estadistica.ar/conceptos/primeros-pasos-en-python

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.

Por Jorge Luis Montivero, Licenciado en Estadística · Mu3Sigma

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 · Qué devuelve ese código sobre el archivo del caso

Corrido entero, funciona sin un error. Pero tres líneas devuelven algo que no es lo que se espera.

describe() promedia códigos

Las columnas aglomerado, sexo, nivel_ed y cat_ocup son categorías guardadas como números, y describe() les calcula media y desvío igual: informa un aglomerado medio de 23,3 y un sexo medio de 1,5. Es el mismo problema que summary() en R, con la misma solución: convertirlas a categóricas antes de describir.

value_counts() ordena por frecuencia, no por código

nivel_ed
4    5081        6    3669        3    2439
5    2190        2    1686        1     349        7      34

plot.hist(bins=20) no muestra nada

Sobre estos ingresos, veinte bins dejan el 93,9 % de los casos en la primera barra y nueve bins vacíos, porque hay un máximo de $40.000.000 que estira la escala.

ReglaBins% en la barra mayorBins vacíos
bins=20 (el tutorial)2093,9 %9
bins="sturges"1596,2 %6
bins="fd"6658,1 %577
Recortando en el percentil 993013,0 %0
En escala logarítmica3015,7 %1

6 · 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 n−1n-1 y np.std() usa nn. Dos librerías que se usan juntas, con defaults distintos. Ver por qué n−1.

Cuánto importa depende del tamaño:

nn.std()np.std()Diferencia
15.448 (el caso)1.003.821,291.003.788,800,003 %
53,96233,544011,8 %

7 · 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—.

8 · 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. Con muestras chicas la diferencia llega al 12 %.
  • Confiar en que numpy avisa de los faltantes. np.mean(serie) delega en pandas y los saltea; sólo np.mean(serie.to_numpy()) devuelve nan.
  • Leer una distribución ordinal con value_counts() sin .sort_index(). Sale ordenada por frecuencia y parece ordenada por categoría.
  • Aceptar el histograma que sale. Con variables muy asimétricas, ninguna regla de bins alcanza: hay que recortar la cola o pasar a escala logarítmica.
  • 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

Seguir leyendo

Cómo citar: Montivero, J. L. (2026). Primeros pasos en Python para Estadística. estadistica.ar. https://estadistica.ar/conceptos/primeros-pasos-en-python

estadistica.ar es gratuita y sin publicidad. Si te sirvió, podés invitar un cafecito por transferencia al alias mu3sigma. Asesoramiento estadístico, encuestas y capacitaciones: m3s.pro · WhatsApp +54 9 383 499-7929.

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-28}
}

Última actualización: 28 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.