11 KiB
Ejecutaremos el script sinac-download.py y nos dara los
archivos zip a trabajar, los descomprimimos y vermos los CSV
necesarios.
Despues de descomprimir los ZIP hay que renombrar los archivos:
- datasets/Nacimientos_2021.csv
- datasets/Nacimientos_2022.csv
- datasets/sinac_2020.csv
Para que sigan la convencion: datasets/sinac2008DatosAbiertos.csv
from pathlib import Path
import json
import pandas as pdcsvs = sorted([p for p in Path("datasets").iterdir() if "csv" in p.name])
samples = {}csvs[PosixPath('datasets/sinac2008DatosAbiertos.csv'),
PosixPath('datasets/sinac2009DatosAbiertos.csv'),
PosixPath('datasets/sinac2010DatosAbiertos.csv'),
PosixPath('datasets/sinac2011DatosAbiertos.csv'),
PosixPath('datasets/sinac2012DatosAbiertos.csv'),
PosixPath('datasets/sinac2013DatosAbiertos.csv'),
PosixPath('datasets/sinac2014DatosAbiertos.csv'),
PosixPath('datasets/sinac2015DatosAbiertos.csv'),
PosixPath('datasets/sinac2016DatosAbiertos.csv'),
PosixPath('datasets/sinac2017DatosAbiertos.csv'),
PosixPath('datasets/sinac2018DatosAbiertos.csv'),
PosixPath('datasets/sinac2019DatosAbiertos.csv'),
PosixPath('datasets/sinac2020DatosAbiertos.csv'),
PosixPath('datasets/sinac2021DatosAbiertos.csv'),
PosixPath('datasets/sinac2022DatosAbiertos.csv')]
csvs[0].name[5:9]'2008'
columnas_totales = []
for csv in csvs:
df = pd.read_csv(csv, low_memory=False)
columnas = set(df.columns.to_list())
columnas_totales.append(columnas)
# print(csv.name, len(df), len(columnas), columnas)
samples[csvs[0].name[5:9]] = df.sample(25)
del dfcolumns = {}
for i, columnas in enumerate(columnas_totales):
columns[csvs[i].name[5:9]] = sorted(list(columnas))
# json.dumps(columns)Con este siguient script produciremos un archivo Excel, colocara las columnas en un renglon por año y utilizaremos esto para determinar las equivalencias.
file = Path("columns.csv")
with file.open("w") as f:
for year, column in columns.items():
print(year, *column, sep=",", file=f)Utilizando como base las columnas correspondientes a los primeros años (antes del 2017), definiremos equivalencias para los rangos del 2017 al 2019.
Para esto utilizamos ChatGPT con el siguiente Prompt:
Te proporcionare dos listas que nombran columnas,
Primera Lista:
{PRIMERA LISTA}
Segunda Lista:
{SEGUNDA LISTA}
Determina cuales son las equivalencias de columnas. Y proporciona un JSON que exprese las equivalencias. No todas las columnas existen mutuamente, asi que determina el conjunto maximo de columnas compatibles por significado de la columna.
Si sirve de contexto, enterate que son columnas correspondientes a campos de informacion de utilidad en resportes de natalidad.
Despues de analizar manualmente las columnas para el 2017,2018,2019 se ha encontrado que el siguiente es un candidato a mapa de equivalencias de columnas.
Para los años 2020, 2021, 2022, tenemos la siguiente relacion de equivalencias.