diff --git a/script/analysis/course_analysis.py b/script/analysis/course_analysis.py index 378ae7b0e9f963f843e7d4b25bf3959501c38855..f1de206ce680a6d141afbf1a498de718d0b377f2 100644 --- a/script/analysis/course_analysis.py +++ b/script/analysis/course_analysis.py @@ -33,22 +33,29 @@ def analysis(df): disciplina = disciplinas.groupby(['COD_ATIV_CURRIC', 'SITUACAO', 'Quantidade']).apply( lambda x: func(x, qnt_matr)).reset_index(name='Taxas gerais') disciplina = disciplina.drop('level_3',1) # retira coluna duplicada do index - return disciplina -# quantidade de vezes cursadas ate obter a aprovacao -def qnt_aprov(df): - qnt = df.groupby(['MATR_ALUNO', 'COD_ATIV_CURRIC'] - ).size().reset_index(name='qnt_aprov') - return qnt -# transforma o dataframe geral em json, # TODO: fazer o mesmo com o semestral -def df_to_json(disciplina,qnt_matr): + # codigo que transforma o dataframe em um dicionario + dict_disciplina = {} for dis in qnt_matr.keys(): - disc = disciplina.loc[disciplina['COD_ATIV_CURRIC']==dis].drop('COD_ATIV_CURRIC',1) # separa o dataframe em disciplina e elimina a coluna codigo + # separa o dataframe em disciplina + disc = disciplina.loc[disciplina['COD_ATIV_CURRIC']==dis] + disc = disc.drop('COD_ATIV_CURRIC',1) # elimina a coluna codigo # seta a coluna SITUACAO como index disc = disc.set_index('SITUACAO').to_dict() + # para caso uma discipl. nao tenha um campo, coloca o campo com valor 0 for i in Situation.SITUATIONS: if not(i[0] in disc['Quantidade'].keys()): disc['Quantidade'][i[0]] = 0 disc['Taxas gerais'][i[0]] = 0 + dict_disciplina[dis] = disc + return dict_disciplina + +# quantidade de vezes cursadas ate obter a aprovacao +def qnt_aprov(df): + qnt = df.groupby(['MATR_ALUNO', 'COD_ATIV_CURRIC'] + ).size().reset_index(name='qnt_aprov') + return qnt +# transforma o dataframe geral em json, # TODO: fazer o mesmo com o semestral +def df_to_json(disciplina,qnt_matr): # cria o json with open(dis+'.json','w') as f: json.dump(disc,f,indent=4) @@ -69,16 +76,38 @@ def func_semestre(x, matr): def analysis_semestre(df): qnt_matr_semestre = matr_semestre(df) - discipline_semestre = df.groupby(['COD_ATIV_CURRIC', 'PERIODO', 'ANO', 'SITUACAO']).size( - ).reset_index(name='counts_semestre') - discipline_semestre = discipline_semestre.groupby(['COD_ATIV_CURRIC', 'PERIODO', 'ANO', 'SITUACAO']).apply(lambda x: func_semestre(x, - qnt_matr_semestre)).reset_index(name='taxas_semetrais') + discipline_semestre = df.groupby(['COD_ATIV_CURRIC', 'PERIODO', 'ANO', 'SITUACAO']) + discipline_semestre = discipline_semestre.size() + + discipline_semestre = discipline_semestre.reset_index(name='counts_semestre') + + discipline_semestre = discipline_semestre.groupby(['COD_ATIV_CURRIC', 'PERIODO', 'ANO', 'SITUACAO']) + + discipline_semestre = discipline_semestre.apply(lambda x: func_semestre(x, qnt_matr_semestre)) + discipline_semestre = discipline_semestre.reset_index(name='taxas_semetrais') + for dis in qnt_matr_semestre.keys(): + dis = ['CI055'] + disc = discipline_semestre.loc[discipline_semestre['COD_ATIV_CURRIC']==dis[0]].drop('COD_ATIV_CURRIC',1) # elimina a coluna codigo + disc = disc.drop('level_4',1) + print(dis[0]) + print(disc.set_index('ANO')) + # seta a coluna SITUACAO como index + disc = disc.set_index('ANO').to_dict('index') + # with open(dis+'.json','w') as f: + # json.dump(disc,f,indent=4) + print("--------------------------------------------------------------------------------") + + break return discipline_semestre + + + def Main(df): - Analysis = analysis(df) + # Analysis = analysis(df) Analysis_semestre = analysis_semestre(df) - matr = counts_matr(df) - df_to_json(Analysis,matr) - matr_semes = matr_semestre(df) + # matr = counts_matr(df) + # df_to_json(Analysis,matr) + # matr_semes = matr_semestre(df) + # print_analise(matr_semes) diff --git a/script/main.py b/script/main.py index ce4b7a63889e0ec6e7eba64f2f218f93535dbfbe..cf8a964d74c01869d0a2dbd516ab82b75e25b4d9 100644 --- a/script/main.py +++ b/script/main.py @@ -12,8 +12,8 @@ def main(): dataframe = load_dataframes(os.getcwd() + '/' + 'base') build_cache(dataframe) - Main(dataframe) cpu_time = timedelta(seconds=round(time.clock() - start_time)) + Main(dataframe) run_time = timedelta(seconds=round(time.time() - start_time_exec)) print("--- Tempo de CPU: {} ---".format(cpu_time)) print("--- Tempo total: {} ---".format(run_time))