Series largas sin agotar la memoria#
Un año de la GEIH tiene del orden de 800 000 registros. Veinte años con todas las columnas no caben en la
memoria de un computador normal. dane-data ofrece tres formas de trabajar con muchos años.
1. Cargar solo las columnas necesarias#
variables recorta cada mes antes de juntarlos, así que la memoria depende solo de las columnas que se
conservan:
df = dd.geih.load(range(2007, 2027), variables=["fex", "sexo", "edad", "ocupado", "ingreso_laboral"])
Es la opción más flexible: después se puede calcular cualquier cosa con pandas. Para los indicadores
laborales, dd.geih.VARIABLES_INDICADORES tiene justo lo que necesita dd.geih.indicadores().
2. Resultados calculados año por año: las funciones serie_*#
Función |
Equivale a |
|---|---|
|
|
|
|
La distribución ponderada de una variable, de la que salen las dos anteriores |
Dan exactamente el mismo resultado que el camino con los microdatos (las pruebas de dane-data lo
comprueban), pero cargan un año a la vez y guardan el resultado de cada año en
~/.cache/dane_data/geih/<tipo>/. Nunca hay más de un año de microdatos en memoria.
>>> res = dd.geih.serie_indicadores(range(2007, 2027), por="sexo") # primera vez: alrededor de un minuto
>>> res = dd.geih.serie_indicadores(range(2007, 2027), por="sexo") # después: instantáneo
Cada año se calcula una vez con todas las desagregaciones de serie_indicadores (total, sexo, zona,
grupo de edad, nivel educativo y departamento), anuales y mensuales. Cambiar por o anual no recalcula
nada; cambiar los filtros o los meses sí, porque es otra consulta.
Cuándo se recalcula#
El resultado guardado de un año se usa solo si no cambió nada de lo que lo produce:
los archivos del año (tamaño y fecha de modificación de cada uno);
la consulta: filtros, meses, población, variables;
el código de
dane-data(la versión y el contenido de los módulos que calculan).
Así, actualizar dane-data, volver a descargar un mes o cambiar un filtro dan resultados correctos sin
borrar nada a mano. dd.geih.clear_cache() borra todo, por ejemplo para liberar espacio.
Medianas de varios años#
Las medias y medianas que juntan años se calculan sobre la distribución completa, no promediando las de cada año:
>>> dd.geih.serie_tabla(range(2015, 2020), variable="ingreso_laboral", estadistico="mediana",
... poblacion="ocupado")
3. Exportar los microdatos mes a mes#
dd.geih.exportar() escribe un CSV con los microdatos armonizados, leyendo y escribiendo un mes a la vez.
Sirve para llevar los datos a Stata, R o Excel, o para procesarlos por partes:
filas = dd.geih.exportar(range(2007, 2027), "geih_ocupados.csv", poblacion="ocupado",
variables=["fex", "sexo", "edad", "departamento", "formal", "ingreso_laboral"])
El archivo se escribe primero con otro nombre y se renombra al terminar: nunca queda un CSV a medias.
¿Cuál usar?#
Necesito… |
Use |
|---|---|
Indicadores laborales (TD, TGP…) de muchos años, por sexo, zona, edad, educación o departamento |
|
Totales, porcentajes, medias o medianas de muchos años |
|
Otros cuantiles o estadísticos de muchos años |
|
Un análisis propio (regresiones, variables nuevas) |
|
Los datos en otro programa |