unir-metodologia/procesamiento_2017-2019.ipynb

36 KiB
Raw Blame History

from functools import cache
import pandas as pd

pd.set_option("display.max_columns", None)
columns_selected = [
    "edo_captura",
    "edo_nac_madre",
    "fecha_nac_madre",
    "edad_madre",
    "estado_conyugal",
    "entidad_residencia_madre",
    "numero_embarazos",
    "hijos_nacidos_muertos",
    "hijos_nacidos_vivos",
    "hijos_sobrevivientes",
    "el_hijo_anterior_nacio",
    "vive_aun_hijo_anterior",
    "orden_nacimiento",
    "recibio_atencion_prenatal",
    "trimestre_recibio_primera_consulta",
    "total_consultas_recibidas",
    "madre_sobrevivio_al_parto",
    "escolaridad_madre",
    "ocupacion_habitual_madre",
    "trabaja_actualmente",
    "fecha_nacimiento_nac_vivo",
    "hora_nacimiento_nac_vivo",
    "sexo_nac_vivo",
    "semanas_gestacion_nac_vivo",
    "talla_nac_vivo",
    "peso_nac_vivo",
    "valoracion_apgar_nac_vivo",
    "valoracion_silverman_nac_vivo",
    "producto_de_un_embarazo",
    "entidad_certifico",
]
df_original = pd.read_csv("~/Downloads/out2.csv", dtype=object)
# df_original.columns
df = df_original.copy()
df_cols = df.columns.to_list()
columnas_description = {x for x in df_cols if x[-2:] == ".1"} | {"estado_conyugal"}
df_cols = [x for x in df_cols if x + ".1" not in columnas_description]
print(columnas_description)
df = df[df_cols]
{'entidad_residencia_madre.1', 'edo_captura.1', 'sexo_nacimiento_vivo.1', 'escolaridad_madre.1', 'edo_nac_madre.1', 'madre_sobrevivio_parto.1', 'recibio_atencion_prenatal.1', 'producto_de_un_embarazo.1', 'estado_conyugal'}
df = df.rename(columns={x: x[:-2] for x in columnas_description})
df.columns
Index(['Unnamed: 0', 'MPO_NACM', 'fecha_nac_madre', 'edad_madre', 'CON_INDM',
       'HABLA_INDM', 'CUAL_LENGM', 'estado_conyug', 'TIPOVIAL_RES',
       'TIPOASEN_RES', 'MPO_RES', 'LOC_RES', 'numeros_embarazos',
       'hijos_nacidos_muertos', 'hijos_nacidos_vivos', 'hijos_sobrevivientes',
       'hijo_anterior_nacio', 'VIVE_AUN', 'orden_nacimiento', 'TRIM_CONS',
       'total_consultas_recibidas', 'DERHAB', 'DERHAB2',
       'ocupacion_habitual_madre', 'CVEOCUPHAB', 'TRAB_ACT',
       'fecha_nacimiento_vivo', 'hora_nacimiento_vivo',
       'semanas_gestacion_vivo', 'talla_nacimiento_vivo', 'peso_nac_vivo',
       'valoracion_apgar_nac_vivo', 'valoracion_silverman_nac_vivo', 'BCG',
       'HEP_B', 'VIT_A', 'VIT_K', 'TAM_AUD', 'ACELRN', 'CVE_CIE', 'ACELRN2',
       'CVE_CIE2', 'PROCNAC', 'FORCEPS', 'ESPECIFIQUE', 'INST_NAC', 'UNIMED',
       'CLUES', 'ATENDIO', 'ATEN_OTRO', 'TIPOVIAL_NAC', 'TIPOASEN_NAC',
       'lugar_de_nacimiento', 'MPO_NAC', 'LOC_NAC', 'CERT_POR', 'OTROMEDICO',
       'UNIMED_33_1', 'CLUES_33_2', 'TIPOVIAL_CERT', 'TIPOASEN_CERT',
       'ENT_CERT', 'MPO_CERT', 'LOC_CERT', 'FECH_CERT', 'FECH_ALTA',
       'FECH_CAMB', 'IDCAPTURA', 'TIPO_FORMATO', 'edo_nac_madre',
       'edo_captura', 'el_hijo_anterior_nacio', 'entidad_certifico',
       'entidad_residencia_madre', 'escolaridad_madre', 'Descrip',
       'lugar_nacimiento', 'madre_sobrevivio_parto', 'producto_de_un_embarazo',
       'recibio_atencion_prenatal', 'sexo_nacimiento_vivo',
       'trabaja_actualmente', 'trimestre_recibio_primera_consulta',
       'vive_aun_hijo_anterior'],
      dtype='object')
mapper = {
    "numeros_embarazos": "numero_embarazos",
    "madre_sobrevivio_parto": "madre_sobrevivio_al_parto",
    "fecha_nacimiento_vivo": "fecha_nacimiento_nac_vivo",
    "hora_nacimiento_vivo": "hora_nacimiento_nac_vivo",
    "sexo_nacimiento_vivo": "sexo_nac_vivo",
    "semanas_gestacion_vivo": "semanas_gestacion_nac_vivo",
    "talla_nacimiento_vivo": "talla_nac_vivo",
    "Descrip": "estado_conyugal",
}
df = df.rename(columns=mapper)
# df_original.sample(n=10)[["estado_conyugal"]]
df[columns_selected + ["CVE_CIE", "CVE_CIE2"]]
edo_captura edo_nac_madre fecha_nac_madre edad_madre estado_conyugal entidad_residencia_madre numero_embarazos hijos_nacidos_muertos hijos_nacidos_vivos hijos_sobrevivientes el_hijo_anterior_nacio vive_aun_hijo_anterior orden_nacimiento recibio_atencion_prenatal trimestre_recibio_primera_consulta total_consultas_recibidas madre_sobrevivio_al_parto escolaridad_madre ocupacion_habitual_madre trabaja_actualmente fecha_nacimiento_nac_vivo hora_nacimiento_nac_vivo sexo_nac_vivo semanas_gestacion_nac_vivo talla_nac_vivo peso_nac_vivo valoracion_apgar_nac_vivo valoracion_silverman_nac_vivo producto_de_un_embarazo entidad_certifico CVE_CIE CVE_CIE2
0 CHIAPAS CHIAPAS 05/07/1980 36 UNIÓN LIBRE CHIAPAS 9 1 8 8 VIVO SI 9 SI SEGUNDO 6 SI NINGUNA HOGAR NaN 19/04/2017 02:00:00 MUJER 40 50 3100 8 0 ÚNICO CHIAPAS 0000 0000
1 CHIAPAS CHIAPAS 17/05/1991 25 UNIÓN LIBRE CHIAPAS 4 99 4 4 VIVO SI 4 SI SEGUNDO 4 SI SECUNDARIA COMPLETA HOGAR NaN 11/01/2017 13:00:00 MUJER 39 50 3900 0 0 ÚNICO CHIAPAS 0000 0000
2 CHIAPAS CHIAPAS 27/01/1982 35 CASADA CHIAPAS 6 0 6 6 VIVO SI 6 SI PRIMERO 3 SI PRIMARIA INCOMPLETA AMA DE CASA NaN 22/05/2017 12:23:00 MUJER 38 50 2960 9 0 ÚNICO CHIAPAS 0000 0000
3 CHIAPAS CHIAPAS 16/11/1983 33 UNIÓN LIBRE CHIAPAS 1 0 1 1 S.I. NaN 1 SI TERCERO 4 SI PRIMARIA COMPLETA AMA DE CASA NaN 03/06/2017 10:35:00 MUJER 99 48 2900 99 99 ÚNICO CHIAPAS 0000 0000
4 CHIAPAS CHIAPAS 22/11/1982 34 UNIÓN LIBRE CHIAPAS 3 99 3 3 VIVO SI 3 SI PRIMERO 5 SI NINGUNA AMA DE CASA NaN 29/04/2017 23:12:00 MUJER 39 51 3050 9 0 ÚNICO CHIAPAS 0000 0000
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
5873372 ZACATECAS OTROS PAISES DE LATINOAMERICA 01/07/1987 31 CASADA ZACATECAS 3 1 2 2 VIVO SI 3 SI PRIMERO 12 SI PROFESIONAL LIC. EN INFORMATICA SI 23/05/2019 16:06:00 MUJER 39 49 2990 9 0 ÚNICO ZACATECAS 0000 0000
5873373 ZACATECAS ZACATECAS 17/07/1986 32 CASADA ZACATECAS 3 0 3 3 VIVO SI 3 SI PRIMERO 5 SI SECUNDARIA COMPLETA HOGAR NaN 24/05/2019 16:55:00 HOMBRE 37 50 3830 9 0 ÚNICO ZACATECAS 0000 0000
5873374 ZACATECAS ZACATECAS 16/01/2000 19 CASADA ZACATECAS 1 0 1 1 NO HA TENIDO OTROS HIJOS(AS) NaN 1 SI PRIMERO 5 SI SECUNDARIA COMPLETA HOGAR NaN 24/05/2019 23:13:00 HOMBRE 42 56 4460 9 0 ÚNICO ZACATECAS 0000 0000
5873375 ZACATECAS ZACATECAS 26/06/2000 18 UNIÓN LIBRE ZACATECAS 2 0 2 2 VIVO SI 2 NO NO RECIBIO 0 SI BACHILLERATO O PREPARATORIA INCOMPLETA HOGAR NaN 25/05/2019 01:47:00 HOMBRE 39 49 3090 9 0 ÚNICO ZACATECAS 0000 0000
5873376 ZACATECAS ZACATECAS 24/09/2002 16 UNIÓN LIBRE SAN LUIS POTOSI 1 0 1 1 NO HA TENIDO OTROS HIJOS(AS) NaN 1 SI PRIMERO 9 SI SECUNDARIA INCOMPLETA HOGAR NaN 25/05/2019 08:53:00 MUJER 40 54 3300 9 0 ÚNICO ZACATECAS 0000 0000

5873377 rows × 32 columns

def _codigo_de_anomalia(x):
    return ",".join([str(x["CVE_CIE"]), str(x["CVE_CIE2"])])


df["codigo_anomalia"] = df[["CVE_CIE", "CVE_CIE2"]].apply(_codigo_de_anomalia, axis=1)
df = df[columns_selected + ["codigo_anomalia"]]
def _ano_nacimiento_vivo_func(str_date):
    try:
        return str_date.split("/")[-1]
    except:
        return ""


df["año_de_nacimiento_vivo"] = df["fecha_nacimiento_nac_vivo"].apply(
    _ano_nacimiento_vivo_func
)
columnas_finales = [
    "edo_captura",
    "edo_nac_madre",
    "fecha_nac_madre",
    "edad_madre",
    "estado_conyugal",
    "entidad_residencia_madre",
    "numero_embarazos",
    "hijos_nacidos_muertos",
    "hijos_nacidos_vivos",
    "hijos_sobrevivientes",
    "el_hijo_anterior_nacio",
    "vive_aun_hijo_anterior",
    "orden_nacimiento",
    "recibio_atencion_prenatal",
    "trimestre_recibio_primera_consulta",
    "total_consultas_recibidas",
    "madre_sobrevivio_al_parto",
    "escolaridad_madre",
    "ocupacion_habitual_madre",
    "trabaja_actualmente",
    "fecha_nacimiento_nac_vivo",
    "hora_nacimiento_nac_vivo",
    "sexo_nac_vivo",
    "semanas_gestacion_nac_vivo",
    "talla_nac_vivo",
    "peso_nac_vivo",
    "valoracion_apgar_nac_vivo",
    "valoracion_silverman_nac_vivo",
    "producto_de_un_embarazo",
    "codigo_anomalia",
    "entidad_certifico",
]
df[columnas_finales].to_csv("2017-2019.csv")