def monta_geo_df_escolas(self, df: pd.DataFrame) -> pd.DataFrame: #adiciona dados de geolocalizacao e setores censitarios aos DataFrame arq_csv_sc = CONST.ARQ_PATH + 'escolas_setores_censitarios.csv' geo_esc = DIU.ajusta_colunas_int_df_inep( pd.read_csv('%slclz_df/DADOS_ESCOLAS_PUBLICAS.csv' % CONST.CSV_PATH, index_col='CO_ENTIDADE')) df = df.merge(geo_esc.loc[geo_esc.PREC_BOA == 1][['LAT', 'LONG']], left_on='CO_ENTIDADE', right_index=True) if os.path.exists(arq_csv_sc): dsc = pd.read_csv(arq_csv_sc, low_memory=False) else: dsc = SetorCensitario.dados_setor_censitario( ('%slclz_df/censo_df/dados/' % CONST.CSV_PATH), glob(('%slclz_df/censo_df/*.shp' % (CONST.CSV_PATH)))[0], df) dsc.to_csv(arq_csv_sc) dsc = self.monta_features_geo_escolas(dsc.dropna().drop_duplicates()) #ajuste de tipos para otimizar o uso da memória for col in dsc.columns: if col.startswith('NU_MEDIA') or col.startswith('NU_PROP'): dsc[col] = dsc[col].astype(np.float16) else: dsc[col] = dsc[col].astype(np.int16) dsc.index = dsc.index.astype(np.int64) df = df.drop(['LAT', 'LONG'], axis=1).merge(dsc, left_on='CO_ENTIDADE', right_index=True) return df
def carrega_csv_escolas(self, ano: str) -> pd.DataFrame: #carrega CSV das escolas do Distrito Federal arq_filtrado = ('%sESCOLAS_FILTRADAS_%s.csv' % (CONST.ARQ_PATH, ano)) if os.path.exists(arq_filtrado): return DIU.ajusta_colunas_int_df_inep( pd.read_csv(arq_filtrado, low_memory=False)) else: arq_csv = ('%s%s/ESCOLAS.CSV' % (CONST.ARQ_PATH, ano)) d = DIU.monta_df_inep(arq_csv) d.to_csv(arq_filtrado) return d
def load_arquivo_docentes(self, ano: str) -> pd.DataFrame: #verifica qual arquivo deve ser carregado arq_filtrado = ('%sDOCENTES_FILTRADOS_%s.csv' % (CONST.ARQ_PATH, ano)) if os.path.exists(arq_filtrado): return DIU.ajusta_colunas_int_df_inep( pd.read_csv(arq_filtrado, low_memory=False)) else: arq_csv = ('%s%s/DOCENTES_%s.CSV' % (CONST.ARQ_PATH, ano, self.regiao)) d = DIU.monta_df_inep(arq_csv) d.to_csv(arq_filtrado) return d
def load_alunos(self, ano: str, alunos_interesse: np.array) -> pd.DataFrame: #carrega o csv das alunos ou monta um DataFrame filtrado arq_filtrado = ('%ALUNOS_FILTRADOS_%s.csv' % (CONST.ARQ_PATH, ano)) if os.path.exists(arq_filtrado): return DIU.ajusta_colunas_int_df_inep( pd.read_csv(arq_filtrado, low_memory=False)) else: a = DIU.monta_df_inep('%s%s/MATRICULA_%s.CSV' % (CONST.ARQ_PATH, ano, self.regiao)) a = self.filtra_df_alunos(alunos_interesse, a, int(ano)) a.to_csv(arq_filtrado) return a
def get_df_escolas(self) -> pd.DataFrame: #monta o dataframe caso seja necessario. if self.df_escolas is None: arq_filtrado = ('%sESCOLAS_MODELAGEM_DF.csv' % (CONST.ARQ_PATH)) if os.path.exists(arq_filtrado): self.df_escolas = DIU.ajusta_colunas_int_df_inep( pd.read_csv(arq_filtrado, low_memory=False, index_col='CO_ENTIDADE')) else: self.df_escolas = self.monta_df_escolas() self.df_escolas.to_csv(arq_filtrado) return self.df_escolas
def get_df_features_turmas15(self): if self.df_features_turmas15 is None: arq_ft_turmas = CONST.PATH_DF_CSV + 'features_turmas15.csv' if os.path.exists(arq_ft_turmas): a = pd.read_csv(arq_ft_turmas, low_memory=False) print(a.shape) print(a.head()) self.df_features_turmas15 = DIU.ajusta_colunas_int_df_inep(a) else: self.df_features_turmas15 = self.monta_df_features_turmas15() self.df_features_turmas15.to_csv(arq_ft_turmas) self.df_features_turmas15.set_index('ID_TURMA') return self.df_features_turmas15
def get_df_features_alunos_15(self): arq_features_alunos = ('%salunos_todas_ft.csv' % CONST.PATH_DF_CSV) if self.df_features_alunos_15 is None: if os.path.exists(arq_features_alunos): self.df_features_alunos_15 = DIU.ajusta_colunas_int_df_inep( pd.read_csv(arq_features_alunos, index_col=[ 'CO_PESSOA_FISICA', 'ID_TURMA', 'CO_ENTIDADE', 'ID_MATRICULA' ])) else: self.df_features_alunos_15 = self.monta_df_features_alunos15() self.df_features_alunos_15.to_csv(arq_features_alunos) return self.df_features_alunos_15