예제 #1
0
 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
예제 #2
0
 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
예제 #3
0
 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
예제 #4
0
 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
예제 #5
0
 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
예제 #6
0
 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
예제 #7
0
 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