diff --git a/script/analysis/course_analysis.py b/script/analysis/course_analysis.py index c52dec75344364d75c50e753d1ab29eadbc2696e..5a46c13739de95341c0e2a3a78719f97090e33e4 100644 --- a/script/analysis/course_analysis.py +++ b/script/analysis/course_analysis.py @@ -3,31 +3,25 @@ import pandas as pd import json import numpy as np import utils.situations -from collections import OrderedDict, defaultdict - - -# df = pd.read_excel("../base/base-2016-1/historico.xls") -# imprime completamente um dataframe - - def print_analise(d): + '''imprime todo o dataframe, por default o pandas so imprime as + 10 linhas inicias a 10 finais, com essa funcao o pandas imprime + as linhas ''' with pd.option_context('display.max_rows', None, 'display.max_columns', 27): print(d) # calcula as taxas - - def func(x, matr): + ''' esta funcao recebe como parametro uma linha do dataframe e a +quantidade de matriculas ''' c = matr[x['COD_ATIV_CURRIC']].values[0] return (x['Quantidade'] / c) # quantidade de matriculas - - def counts_matr(df): return df.groupby(['COD_ATIV_CURRIC']).size() - +# taxas e quantidades semetrais def analysis(df): qnt_matr = counts_matr(df) # quantidade de matriculas disciplina # conta quantas vezes os valores de 'SIGLA' se repete para cada disciplina @@ -36,19 +30,22 @@ def analysis(df): # adiciona mais uma coluna ao df disciplina com as taxas de cada valor de 'SIGLA' disciplina = disciplinas.groupby(['COD_ATIV_CURRIC', 'SIGLA', 'Quantidade']).apply( lambda x: func(x, qnt_matr)).reset_index(name='Taxas gerais') - disciplina = disciplina.drop('level_3',1) - for dis in qnt_matr.keys(): - disc = disciplina.loc[disciplina['COD_ATIV_CURRIC']==dis].drop('COD_ATIV_CURRIC',1) - disc = disc.set_index('SIGLA').to_dict(into=OrderedDict) - with open(dis+'.json','w') as f: - json.dump(disc,f,indent=4) - return disciplina.set_index('COD_ATIV_CURRIC') + 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): + 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 + # seta a coluna sigla como index + disc = disc.set_index('SIGLA').to_dict() + # cria o json + with open(dis+'.json','w') as f: + json.dump(disc,f,indent=4) def matr_semestre(df): return df.groupby(['COD_ATIV_CURRIC', 'PERIODO', 'ANO']).size() @@ -61,13 +58,6 @@ def func_semestre(x, matr): periodo = x['PERIODO'].values[0] disciplina = x['COD_ATIV_CURRIC'].values[0] c = matr[disciplina,periodo,ano] - # break - # print(x['PERIODO']) - # print("Disciplina: %s\nPeriodo:%s \nAno:%d"%(disciplina,periodo,ano)) - # c = matr['CI056','2'] - # print(c) - # print(disciplina) - # print("--------------------------------------------------------------------------") return (x['counts_semestre'] / c) @@ -82,25 +72,6 @@ def analysis_semestre(df): def Main(df): Analysis = analysis(df) Analysis_semestre = analysis_semestre(df) - # print_analise(Analysis) matr = counts_matr(df) + df_to_json(Analysis,matr) matr_semes = matr_semestre(df) - # print_analise(merged) - -# main() -# matr = counts_matr(df) -# analysis(df) -# qnt_aprov(df) - -# -##f = lambda x: x / c[x] -## p = df.groupby(['COD_ATIV_CURRIC','SIGLA']).size().apply(lambda x: (x /c['CI055'])*100) -#k = (df.sort(['ANO','PERIODO'])) -##(p.apply(lambda x: print(p['COD_ATIV_CURRIC']))) -# -# .size().reset_index(name = "count"); -# c = p.groupby(['count','SIGLA']).size() -## ''' percorre mais uma vez a serie para aplicar a funcao lambida, se a ''' -## c = lambda x: x+1 -## curses = df['COD_ATIV_CURRIC'].drop_duplicates() -# 'MATR_ALUNO','