Skip to content
Snippets Groups Projects
Commit 5eff804c authored by odair mario's avatar odair mario
Browse files

semestrais atualizado

parent ff15cbc7
No related branches found
No related tags found
1 merge request!1WIP: Development
...@@ -6,33 +6,33 @@ from utils.situations import Situation as sit ...@@ -6,33 +6,33 @@ from utils.situations import Situation as sit
#funcoes #funcoes
# #
# make_taxas -- parametros df e ultima turma ingresso # make_taxas -- parametros df e ultima turma ingresso
# *qtd_alunos # *qtd_alunos
# *qtd_trancamento # *qtd_trancamento
# *taxa_reprovacao_absoluta # *taxa_reprovacao_absoluta
# *taxa_reprovacao_frequencia # *taxa_reprovacao_frequencia
# *taxa_reprovacao_ultimo_absoluto # *taxa_reprovacao_ultimo_absoluto
# *taxa_reprovacao_ultimo_frequencia # *taxa_reprovacao_ultimo_frequencia
# *taxa_trancamento # *taxa_trancamento
##listas_disciplinas é dicionario com todas as disciplinas ##listas_disciplinas é dicionario com todas as disciplinas
#def taxas_gerais(df,ultima_turma_ingresso,lista_disciplina): #def taxas_gerais(df,ultima_turma_ingresso,lista_disciplina):
# df_quantidade = df.groupby(['COD_ATIV_CURRIC', 'SITUACAO'] # df_quantidade = df.groupby(['COD_ATIV_CURRIC', 'SITUACAO']
# ).size().reset_index(name='Quantidades') # ).size().reset_index(name='Quantidades')
# for disciplina in lista_disciplina.keys: # for disciplina in lista_disciplina.keys:
# quantidades = df_quantidade.loc[df_quantidade.COD_ATIV_CURRIC == disciplina] # quantidades = df_quantidade.loc[df_quantidade.COD_ATIV_CURRIC == disciplina]
# #
# qtd_trancamento_df =quantidades.loc[quantidades.SITUACAO == # qtd_trancamento_df =quantidades.loc[quantidades.SITUACAO ==
# (sit.SIT_CANCELADO || sit.SIT_TRANCAMENTO_ADMINISTRATIVO || # (sit.SIT_CANCELADO || sit.SIT_TRANCAMENTO_ADMINISTRATIVO ||
# sit.SIT_TRANCAMENTO_TOTAL) ] # sit.SIT_TRANCAMENTO_TOTAL) ]
# qtd_trancamento = qtd_trancamento_df.sum # qtd_trancamento = qtd_trancamento_df.sum
# #
# qtd_conhecimento_aprov = quantidades.loc[quantidades.SITUACAO == # qtd_conhecimento_aprov = quantidades.loc[quantidades.SITUACAO ==
# sit.SIT_CONHECIMENTO_APROVADO].Quantidade # sit.SIT_CONHECIMENTO_APROVADO].Quantidade
# qtd_conhecimento_reprov = quantidades.loc[quantidades.SITUACAO == # qtd_conhecimento_reprov = quantidades.loc[quantidades.SITUACAO ==
# sit.SIT_CONHECIMENTO_REPROVADO].Quantidade # sit.SIT_CONHECIMENTO_REPROVADO].Quantidade
# lista_disciplina[disciplina][qtd_conhecimento] = qtd_conhecimento_aprov # lista_disciplina[disciplina][qtd_conhecimento] = qtd_conhecimento_aprov
# + qtd_conhecimento_reprov # + qtd_conhecimento_reprov
# if qtd_conhecimento: # if qtd_conhecimento:
# taxa_conhecimento = qtd_conhecimento_aprov / listas_disciplinas[disciplina][qtd_conhecimento] # taxa_conhecimento = qtd_conhecimento_aprov / listas_disciplinas[disciplina][qtd_conhecimento]
# else: # else:
# taxa_conhecimento = -1 # taxa_conhecimento = -1
# #
...@@ -147,15 +147,15 @@ from utils.situations import Situation as sit ...@@ -147,15 +147,15 @@ from utils.situations import Situation as sit
# #
def informacoes_gerais(df,lista_disciplinas): def informacoes_gerais(df,lista_disciplinas):
#quantidade de matriculas #quantidade de matriculas
disciplinas = df.groupby(['COD_ATIV_CURRIC']).size() disciplinas = df.groupby(['COD_ATIV_CURRIC']).size()
for disciplina in disciplinas.index: for disciplina in disciplinas.index:
disciplina_dict = {} disciplina_dict = {}
disciplina_df = df.loc[df.COD_ATIV_CURRIC == disciplina] disciplina_df = df.loc[df.COD_ATIV_CURRIC == disciplina]
disciplina_dict['qtd_alunos'] = disciplinas[disciplina] disciplina_dict['qtd_alunos'] = disciplinas[disciplina]
disciplina_dict['disciplina_codigo'] = disciplina disciplina_dict['disciplina_codigo'] = disciplina
disciplina_dict['disciplina_nome'] = \ disciplina_dict['disciplina_nome'] = \
disciplina_df.NOME_ATIV_CURRIC.values[0] disciplina_df.NOME_ATIV_CURRIC.values[0]
lista_disciplinas[disciplina] = disciplina_dict lista_disciplinas[disciplina] = disciplina_dict
# -nome da disciplina # -nome da disciplina
# -codigo da disciplina # -codigo da disciplina
# -lista de disciplina # -lista de disciplina
...@@ -164,45 +164,45 @@ def informacoes_gerais(df,lista_disciplinas): ...@@ -164,45 +164,45 @@ def informacoes_gerais(df,lista_disciplinas):
# matriculas # matriculas
def conhecimento(qtd,disciplina_dict): def conhecimento(qtd,disciplina_dict):
conheci_df = qtd.loc[(qtd.SITUACAO == sit.SIT_CONHECIMENTO_APROVADO) | conheci_df = qtd.loc[(qtd.SITUACAO == sit.SIT_CONHECIMENTO_APROVADO) |
(qtd.SITUACAO == sit.SIT_CONHECIMENTO_REPROVADO)] (qtd.SITUACAO == sit.SIT_CONHECIMENTO_REPROVADO)]
total_conheci = conheci_df.qtd.sum() total_conheci = conheci_df.qtd.sum()
if np.isnan(total_conheci): if np.isnan(total_conheci):
total_conheci = 0 total_conheci = 0
conheci_aprov = conheci_df.loc[conheci_df.SITUACAO == \ conheci_aprov = conheci_df.loc[conheci_df.SITUACAO == \
sit.SIT_CONHECIMENTO_APROVADO].set_index('COD_ATIV_CURRIC' ) sit.SIT_CONHECIMENTO_APROVADO].set_index('COD_ATIV_CURRIC' )
disciplina_dict['qtd_conhecimento'] = total_conheci disciplina_dict['qtd_conhecimento'] = total_conheci
if (total_conheci !=0) and (not conheci_aprov.empty): if (total_conheci !=0) and (not conheci_aprov.empty):
disciplina_dict['taxa_conhecimento'] = conheci_aprov.qtd.values[0] / total_conheci disciplina_dict['taxa_conhecimento'] = conheci_aprov.qtd.values[0] / total_conheci
else: else:
disciplina_dict['taxa_conhecimento'] = 0.0 disciplina_dict['taxa_conhecimento'] = 0.0
def trancamento(qtd,disciplina_dict,qtd_matr): def trancamento(qtd,disciplina_dict,qtd_matr):
trancamento_df = qtd.loc[(qtd.SITUACAO == sit.SIT_TRANCAMENTO_ADMINISTRATIVO) | trancamento_df = qtd.loc[(qtd.SITUACAO == sit.SIT_TRANCAMENTO_ADMINISTRATIVO) |
(qtd.SITUACAO == sit.SIT_TRANCAMENTO_TOTAL) | (qtd.SITUACAO == sit.SIT_TRANCAMENTO_TOTAL) |
(qtd.SITUACAO == sit.SIT_CANCELADO)] (qtd.SITUACAO == sit.SIT_CANCELADO)]
qtd_tranc = trancamento_df.qtd.sum() qtd_tranc = trancamento_df.qtd.sum()
if np.isnan(qtd_tranc): if np.isnan(qtd_tranc):
qtd_tranc = 0 qtd_tranc = 0
disciplina_dict['qtd_trancamento'] = qtd_tranc disciplina_dict['qtd_trancamento'] = qtd_tranc
disciplina_dict['taxa_trancamento'] = qtd_tranc / qtd_matr if qtd_matr else 0.0 disciplina_dict['taxa_trancamento'] = qtd_tranc / qtd_matr if qtd_matr else 0.0
def reprovacao(qtd,disciplina,qtd_matr,taxa_reprov_absoluta,taxa_reprov_freq): def reprovacao(qtd,disciplina,qtd_matr,taxa_reprov_absoluta,taxa_reprov_freq):
'''existe as analises reprovacao absoluta, reprovacao por frequencia e '''existe as analises reprovacao absoluta, reprovacao por frequencia e
reprovacao absoluta, reprovacao por frequencia da ultima vez que a reprovacao absoluta, reprovacao por frequencia da ultima vez que a
disciplina foi ofertada, a logica da analise eh a mesma so muda os valores disciplina foi ofertada, a logica da analise eh a mesma so muda os valores
do dataframe qtd e o nomes das chaves do dicionario.Eh possivel reaproveitar do dataframe qtd e o nomes das chaves do dicionario.Eh possivel reaproveitar
o mesmo codigo para fazer analise geral e da ultima vez que foi ofertado, o mesmo codigo para fazer analise geral e da ultima vez que foi ofertado,
para isso so eh preciso enviar outro dataframe qtd e enviar como string o para isso so eh preciso enviar outro dataframe qtd e enviar como string o
indice do dicionario para ser atribuido de forma correta''' indice do dicionario para ser atribuido de forma correta'''
sit_reprov = sit.SITUATION_FAIL + (sit.SIT_REPROVADO_SEM_NOTA,) sit_reprov = sit.SITUATION_FAIL + (sit.SIT_REPROVADO_SEM_NOTA,)
reprov_df = qtd.loc[(qtd.SITUACAO == sit_reprov[0]) | reprov_df = qtd.loc[(qtd.SITUACAO == sit_reprov[0]) |
(qtd.SITUACAO == sit_reprov[1]) | (qtd.SITUACAO == sit_reprov[1]) |
(qtd.SITUACAO == sit_reprov[2]) | (qtd.SITUACAO == sit_reprov[2]) |
(qtd.SITUACAO == sit_reprov[3]) ] (qtd.SITUACAO == sit_reprov[3]) ]
qtd_reprov_abso = reprov_df.qtd.sum() #quantidade de reprovacao absoluta qtd_reprov_abso = reprov_df.qtd.sum() #quantidade de reprovacao absoluta
qtd_reprov_freq = reprov_df.loc[reprov_df.SITUACAO == sit_reprov[1]] qtd_reprov_freq = reprov_df.loc[reprov_df.SITUACAO == sit_reprov[1]]
if qtd_matr != 0: if qtd_matr != 0:
disciplina[taxa_reprov_absoluta] = 0.0 \ disciplina[taxa_reprov_absoluta] = 0.0 \
if np.isnan(qtd_reprov_abso) else qtd_reprov_abso / qtd_matr if np.isnan(qtd_reprov_abso) else qtd_reprov_abso / qtd_matr
...@@ -210,43 +210,65 @@ def reprovacao(qtd,disciplina,qtd_matr,taxa_reprov_absoluta,taxa_reprov_freq): ...@@ -210,43 +210,65 @@ def reprovacao(qtd,disciplina,qtd_matr,taxa_reprov_absoluta,taxa_reprov_freq):
if qtd_reprov_freq.empty else qtd_reprov_freq.qtd.values[0] / qtd_matr if qtd_reprov_freq.empty else qtd_reprov_freq.qtd.values[0] / qtd_matr
else: else:
disciplina[taxa_reprov_absoluta] = 0.0 disciplina[taxa_reprov_absoluta] = 0.0
disciplina[taxa_reprov_freq] = 0.0 disciplina[taxa_reprov_freq] = 0.0
def analises_gerais(df,lista_disciplinas): def analises_gerais(df,lista_disciplinas):
qtd_geral= df.groupby(['COD_ATIV_CURRIC','SITUACAO']).size().reset_index(name='qtd' ) qtd_geral= df.groupby(['COD_ATIV_CURRIC','SITUACAO']).size().reset_index(name='qtd' )
print(df.columns) qtd_ultimo_geral = \
df.groupby(['COD_ATIV_CURRIC','SITUACAO','ANO','PERIODO']).size().reset_index(name='qtd')
matr_por_semestre = \
df.groupby(['COD_ATIV_CURRIC','ANO','PERIODO']).size().reset_index(name='matr')
for disciplina in lista_disciplinas.keys(): for disciplina in lista_disciplinas.keys():
disciplina_dict = {} disciplina_dict = {}
disciplina_df = df.loc[df.COD_ATIV_CURRIC == disciplina] qtd = qtd_geral.loc[qtd_geral.COD_ATIV_CURRIC == disciplina]
disciplina_semestral = qtd_ultimo_geral.loc[qtd_ultimo_geral.COD_ATIV_CURRIC == \
disciplina]
ano = np.amax(disciplina_semestral.ANO)
disciplina_ano = disciplina_semestral.loc[disciplina_semestral.ANO \
== ano]
periodo = np.amax(disciplina_ano.PERIODO)
qtd_ultimo = disciplina_ano.loc[disciplina_ano.PERIODO == periodo]
#quantidade de alunos #quantidade de alunos
qtd_matriculas = lista_disciplinas[disciplina]['qtd_alunos'] qtd_matriculas = lista_disciplinas[disciplina]['qtd_alunos']
qtd_matr_ultimo = \
matr_por_semestre.loc[(matr_por_semestre.COD_ATIV_CURRIC == disciplina) &
(matr_por_semestre.ANO == ano) &
(matr_por_semestre.PERIODO == periodo)].matr.values[0]
#qtd eh um dataframe que contem a ocorrencia de cada situacao #qtd eh um dataframe que contem a ocorrencia de cada situacao
qtd = qtd_geral.loc[qtd_geral.COD_ATIV_CURRIC == disciplina] qtd = qtd_geral.loc[qtd_geral.COD_ATIV_CURRIC == disciplina]
#faz analises relacionada ao conhecimento #faz analises relacionada ao conhecimento
conhecimento(qtd,disciplina_dict) conhecimento(qtd,disciplina_dict)
# faz analises relacionada ao trancamento # faz analises relacionada ao trancamento
trancamento(qtd,disciplina_dict,qtd_matriculas) trancamento(qtd,disciplina_dict,qtd_matriculas)
# faz analises relacionada a reprovacoes # faz analises relacionada a reprovacoes
reprovacao(qtd,disciplina_dict,qtd_matriculas) reprovacao(qtd,disciplina_dict,qtd_matriculas,'taxa_reprovacao_absoluta','taxa_reprovacao_frequencia')
#print(disciplina_dict) reprovacao(qtd_ultimo,disciplina_dict,qtd_matriculas,'taxa_reprovacao_ultimo_absoluta',
print("\n" ) 'taxa_reprovacao_ultimo_frequencia')
lista_disciplinas[disciplina].update(disciplina_dict)
#print(disciplina_dict)
# -qtd_conhecimento # -qtd_conhecimento
# -qtd_trancamento # -qtd_trancamento
# -taxa_conhecimento # -taxa_conhecimento
# -taxa_reprovacao_absoluta # -taxa_reprovacao_absoluta
# -taxa_reprovacao_frequencia # -taxa_reprovacao_frequencia
# *taxa_reprovacao_ultimo_absoluto # -taxa_reprovacao_ultimo_absoluto
# *taxa_reprovacao_ultimo_frequencia # -taxa_reprovacao_ultimo_frequencia
# -taxa_trancamento # -taxa_trancamento
# *nota geral desvio padrao geral # *nota geral desvio padrao geral
# *nota ultima vez ofertado e desvio padrao # *nota ultima vez ofertado e desvio padrao
#def analises_semestrais() def analises_semestrais(df,lista_disciplinas):
geral_df = \
df.groupby(['COD_ATIV_CURRIC','ANO','PERIODO']).size().reset_index(name
= 'matr' )
geral_nota_df = \
df.groupby(['COD_ATIV_CURRIC','ANO','PERIODO','SITUACAO','MEDIA_FINAL']).size()
print(geral_nota_df.loc[geral_nota_df.SITUACAO == sit.SIT_APROVADO])
# *taxa aprovacao semestral # *taxa aprovacao semestral
# *quantidade de matricula por semestre # *quantidade de matricula por semestre
def analises_disciplinas (df): def analises_disciplinas(df):
lista_disciplinas = {} lista_disciplinas = {}
informacoes_gerais(df,lista_disciplinas) informacoes_gerais(df,lista_disciplinas)
analises_gerais(df,lista_disciplinas) analises_gerais(df,lista_disciplinas)
# analises_semestrais(df,listas_disciplinas) analises_semestrais(df,lista_disciplinas)
# """tranformar para json """ # """tranformar para json """
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment