def seccion_k(self): db1 = self.dset cortado = pd.cut(db1.Diff_salida_enellugar.dt.seconds, [0, 20, 40, 1000000], labels=['Menos 20 min', '20 a 40 min', 'Más 40 min']) result = pd.crosstab(db1['Bas_avan'], cortado, margins=True, margins_name='Total', dropna=False) result.columns.name = 'Tiempo llegada al lugar' result.index.name = 'Tipo Móvil' titulo = 'Sección K: INTERVENCIONES PRE HOSPITALARIAS (SAMU)' texto = 'Se asume que todas las intervenciones críticas son realizadas \ por móviles avanzados y que las no-críticas por móviles básicos. Esto \ determina que las casillas de las prestaciones críticas tengan valores \ de cero para móviles básicos y las prestaciones no-críticas tengan \ valores cero para móviles avanzados. \n \n' espacios = '\n \n' print(titulo, file=open(self.informe_arch, 'a')) print(texto, file=open(self.informe_arch, 'a')) print(result, file=open(self.informe_arch, 'a')) print(espacios, file=open(self.informe_arch, 'a')) pcolor('Calculo y escribo la sección K', 'INFO') pcolor(result, 'INFO')
def descripcion_BD(BD): pcolor('Estas son las columnas', 'INFO') pcolor(BD.columns, 'INFO') pcolor('Descripción del tiempo', 'INFO') pcolor('\n', 'INFO') pcolor(BD.Fecha.describe(), 'INFO')
def archivo_infome(self, nombrearchivo=None): if nombrearchivo: self.informe_arch = '../temp/' + nombrearchivo else: self.informe_arch = '../temp/Informe.txt' print(' ', file=open(self.informe_arch, 'w')) pcolor('Se crea el archivo:', 'INFO') pcolor(self.informe_arch, 'INFO')
def seccion_n(dset): global result_n2, result_n1 db1 = dset # Parametrizo para las patologías del REM8 politrauma = [ 'Accidente vehicular o transporte. Atropellos', 'Caídas graves', 'Accidente múltiples víctimas (cualquier razón)' ] db1['Patol'] = np.nan db1.loc[db1['Submotivo del Llamado'].isin(politrauma), 'Patol'] = 'PoliTMT' db1.loc[db1['Submotivo del Llamado'] == 'Colapso respiratorio o circulatorio. PCR. Asfixia', 'Patol'] = 'PCR' db1.loc[db1['Submotivo del Llamado'] == 'Dolor de pecho', 'Patol'] = 'SCA' db1.loc[db1['Patol'].isnull(), 'Patol'] = 'Otros' db1['Patol'] = pd.Categorical( db1['Patol'], categories=['PCR', 'PoliTMT', 'SCA', 'Otros'], ordered=True) # Parametrizo para los sexos del REM8 db1.loc[db1['Género'] == 'Femenino', 'Género'] = 'Fem' db1.loc[db1['Género'] == 'Masculino', 'Género'] = 'Mas' db1['Género'] = pd.Categorical(db1['Género'], categories=['Mas', 'Fem'], ordered=True) # escribo la tabla dum1 = pd.cut(db1.Edad, range(0, 90, 5), right=False) db1['Patol'].value_counts(sort=False) result0 = pd.crosstab(db1['Patol'], db1['Género']) # total result1 = pd.crosstab(db1['Patol'], [dum1, db1['Género']]) # dividida por edad # (tuve que setear las # las columnas maximas # de pandas) # escribo en el informe titulo = ' Sección N: TRASLADO SECUNDARIO (Desde un Establecimiento a Otro)' texto = 'Es una tabla larga, por lo que se divide en varios espacios ' espacios = '\n \n' print(titulo, file=open(informe_arch, 'a')) print(texto, file=open(informe_arch, 'a')) print(result0, file=open(informe_arch, 'a')) print(result1, file=open(informe_arch, 'a')) pcolor('Calculo y escribo la sección N', 'INFO') result_n1 = result0 result_n2 = result1 return (result_n2)
def __init__(self): pcolor('Importaste la clase Analizador', 'HEADER') print('Las funciones son:') print('archivo_infome') print('asignador_dataset') print('rango_alcance') print('seccion_k') self.informe_arch = '' self.dset = pd.DataFrame()
def __init__(self): pcolor('Has importado la clase importadora de BDs', 'HEADER') print('Las funciones son:') print('dbexistentes') print('importo_BD') print('complejidad_ambulancia') print('descripcion_BD') self.dir_propuesto = '../' self.directorio = '' self.BD = pd.DataFrame()
def complejidad_ambulancia(BD): BD['Bas_avan'] = BD['Tipo Despachado'] BD.loc[BD['Tipo Despachado'] == 'm1', 'Bas_avan'] = 'Básico' BD.loc[BD['Tipo Despachado'] == 'm2', 'Bas_avan'] = 'Avanzado' BD.loc[BD['Tipo Despachado'] == 'm3', 'Bas_avan'] = 'Avanzado' BD.loc[BD['Tipo Despachado'] == 'x5', 'Bas_avan'] = 'Avanzado' BD['Bas_avan'] = pd.Categorical(BD['Bas_avan'], categories=['Básico', 'Avanzado'], ordered=True) pcolor('Parametrizo complejidad móvil', 'INFO')
def base_ambulancia(self, base_ambulancia=None): pcolor('Hay que elegir la base que se quiere calcular', 'INFO') if base_ambulancia: if base_ambulancia == 'SAMU': pass elif base_ambulancia == 'Quilpué': sector = self.BD['Nombre Vehículo'].str.contains('R3') == True self.BD = self.BD[sector] else: pcolor('[1] Todo SAMU, [2] Quilpué') decide = input('Elige [1/2]') if decide == '1': pass elif decide == '2': sector = self.BD['Nombre Vehículo'].str.contains('R3') == True self.BD = self.BD[sector]
def seccion_l(self): db1 = self.dset test = db1.loc[db1['Motivo del Llamado'] != 'Traslados'] result = test.groupby(['Categoría Vehículo', 'Bas_avan'])['Id'].count() result.index.names = ['Categoría Vehículo', 'Tipo móvil'] titulo = ' Sección L: TRASLADOS PRIMARIOS A UNIDADES DE URGENCIA' texto = ' ' espacios = '\n \n' print(titulo, file=open(self.informe_arch, 'a')) print(texto, file=open(self.informe_arch, 'a')) print(result, file=open(self.informe_arch, 'a')) print(espacios, file=open(self.informe_arch, 'a')) pcolor('Calculo y escribo la sección L', 'INFO') pcolor(result, 'INFO')
def rango_alcance(self): # los tiempos de z17 al z8 los divido según requisito planilla db1 = self.dset titulo = 'REM 8' result = 'Este informe abarca desde el {inicio} al {fin}, está basado\ en la la/las siguientes comunas {comunas} con {cantidad} casos cada \ una'.format(inicio=db1.Fecha.describe()['first'].strftime('%d-%m-%Y'), fin=db1.Fecha.describe()['last'].strftime('%d-%m-%Y'), comunas=db1.Comuna.value_counts().head().index.values, cantidad=db1.Comuna.value_counts().head().values) espacios = '\n \n' print(titulo, file=open(self.informe_arch, 'a')) print(result, file=open(self.informe_arch, 'a')) print(espacios, file=open(self.informe_arch, 'a')) pcolor('Cabecera del informe', 'INFO') pcolor(result, 'INFO')
def seccion_m(self): db1 = self.dset test = db1.loc[db1['Motivo del Llamado'] == 'Traslados'] result = test.groupby(['Categoría Vehículo', 'Bas_avan'])['Id'].count() result.index.names = ['Categoría Vehículo', 'Tipo móvil'] result titulo = ' Sección M: TRASLADO SECUNDARIO (Desde un Establecimiento a Otro)' texto = ' ' espacios = '\n \n' print(titulo, file=open(self.informe_arch, 'a')) print(texto, file=open(self.informe_arch, 'a')) print(result, file=open(self.informe_arch, 'a')) print(espacios, file=open(self.informe_arch, 'a')) pcolor('Calculo y escribo la sección M', 'INFO') pcolor(result, 'INFO')
def cortar(self): pcolor( f'Elegiste desde el {self.lim_inferior} al {self.lim_superior},', 'INFO') pcolor( f'Elegiste las comunas de {self.BD.Comuna.value_counts().index[0]}', 'INFO') self.BD = self.BD.loc[(self.BD.Fecha > self.lim_inferior) & (self.BD.Fecha < self.lim_superior)] pcolor(self.BD.Fecha.describe(), 'INFO')
def main(): # Propongo las bases de datos pcolor('Este script asegura las dependencias', 'HEADER') dir_lectura = dbexistentes() pcolor('Se utilizará el siguiente drectorio', 'HEADER') pcolor(dir_lectura, 'OK') # asigno las bases de datos (importo) db_reportebase = importo_BD(dir_lectura) print(db_reportebase.info()) # Creo variable especial para REM8 de complejidad complejidad_ambulancia(db_reportebase) # Describo a grandes rasgos descripcion_BD(db_reportebase) global BD BD = db_reportebase.copy()
def limites(self): pcolor('Asumo que el mes a calcular es:', 'INFO') pcolor(self.BD.Fecha.describe()['last'].strftime('%m-%Y'), 'INFO') decide = input('Aceptas? [s/n]') or 's' if decide == 's': m = self.BD.Fecha.describe()['last'].month y = self.BD.Fecha.describe()['last'].year dia_final = calendar.monthrange(y, m)[1] dum = str(y) + str(m) + str(1) dum1 = str(y) + str(m) + str(dia_final) self.lim_inferior = pd.to_datetime(dum, format='%Y%m%d') self.lim_superior = pd.to_datetime(dum1, format='%Y%m%d') else: lee_in = input('Ingresa fecha inical [AAAA-MM-DD]') lee_fin = input('Ingresa fecha final [AAAA-MM-DD]') self.lim_inferior = pd.to_datetime(lee_in, format='%Y-%m-%d') self.lim_superior = pd.to_datetime(lee_fin, format='%Y-%m-%d') pcolor('Tu mes listo', 'OK')
def __init__(self): pcolor('Inicio de submuestra', 'HEADER') self.lim_inferior = np.nan self.lim_superior = np.nan self.BD = pd.DataFrame()
def dbexistentes(): # dir_propuesto = '../../../BD/BD_compiladas/' dir_propuesto = '../' pcolor('Estos son los archivos existentes en ', 'INFO') pcolor(dir_propuesto, 'INFO') pcolor('Son las siguientes:', 'INFO') datos = [] for dirname, dirnames, filenames in os.walk(dir_propuesto): for filename in filenames: datos.append(os.path.join(dirname, filename)) pcolor(datos, 'OK') pcolor('Si filtro por reportebase encuentro lo siguiente:', 'INFO') dir_propuesto_reportebase = [f for f in datos if 'reportebase' in f] pcolor(dir_propuesto_reportebase, 'OK') decide = input('Aceptas? [s/n]') or 's' if decide == 's': pass else: dir_propuesto_reportebase = input('Favor escribe directorio:') return dir_propuesto_reportebase[0]
def asignador_dataset(self, dataset): self.dset = dataset pcolor('Se asigna la base de datos', 'INFO')