dane-data frente a las cifras del DANE#
¿Coinciden los indicadores de dane-data con los que publica el DANE? Este ejemplo compara cada mes desde
2007 con los anexos oficiales del mercado laboral, que el repositorio guarda en
tests/datos/dane_publicado.csv (vea Validación).
import dane_data as dd
publicado = pd.read_csv("../../tests/datos/dane_publicado.csv", comment="#")
publicado = publicado[(publicado.serie == "principal") & (publicado.grupo == "total")]
publicado[["anio", "mes", "td", "tgp", "to", "ocupados", "anexo"]].tail(3)
| anio | mes | td | tgp | to | ocupados | anexo | |
|---|---|---|---|---|---|---|---|
| 233 | 2026 | 6 | 8.026926 | 64.543037 | 59.362215 | 24458.794302 | ago2026 |
| 234 | 2026 | 7 | 8.104578 | 64.768526 | 59.519311 | 24546.881455 | ago2026 |
| 235 | 2026 | 8 | 9.363680 | 63.289540 | 57.363310 | 23685.337691 | ago2026 |
nuestro = dd.geih.serie_indicadores(range(2007, 2027), anual=False)
comp = nuestro.merge(publicado, on=["anio", "mes"], suffixes=("", "_dane"))
comp["fecha"] = pd.to_datetime(comp[["anio", "mes"]].rename(columns={"anio": "year", "mes": "month"}).assign(day=1))
for tasa in ("td", "tgp", "to"):
comp[f"dif_{tasa}"] = comp[tasa] - comp[f"{tasa}_dane"]
comp["dif_ocupados_%"] = 100 * (comp["ocupados"] / (1000 * comp["ocupados_dane"]) - 1)
comp[["dif_td", "dif_tgp", "dif_to", "dif_ocupados_%"]].abs().max()
dif_td 0.000049
dif_tgp 0.000047
dif_to 0.000042
dif_ocupados_% 0.000003
dtype: float64
En los 236 meses, la diferencia más grande en las tasas es de menos de una diezmilésima de punto, y en los ocupados de menos de una millonésima: es el redondeo de los anexos, que traen seis decimales. Las cifras son las mismas.
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 5.6), sharex=True, gridspec_kw={"height_ratios": [3, 1.2]})
ax1.plot(comp["fecha"], comp["td_dane"], lw=5, color="#eb6834", alpha=0.35, label="Publicada por el DANE")
ax1.plot(comp["fecha"], comp["td"], lw=1.4, color="#2a78d6", label="dane-data")
ax1.yaxis.set_major_formatter(mtick.PercentFormatter(decimals=0))
ax1.set_title("Tasa de desocupación mensual, total nacional")
ax1.legend(loc="upper left")
ax2.scatter(comp["fecha"], comp["dif_td"], s=6, color="#2a78d6")
ax2.axhline(0, color="0.3", lw=0.8)
ax2.set_ylim(-0.02, 0.02)
ax2.set_ylabel("Diferencia\n(puntos)")
fig.tight_layout();
Las pruebas automáticas de dane-data hacen esta misma comparación para la TD, la TGP, la TO y los
ocupados, también en la serie de empalme, en las cabeceras y por sexo.