Commit 5eff804c authored by odair mario's avatar odair mario
Browse files

semestrais atualizado

parent ff15cbc7
......@@ -6,33 +6,33 @@ from utils.situations import Situation as sit
#funcoes
#
# make_taxas -- parametros df e ultima turma ingresso
# *qtd_alunos
# *qtd_trancamento
# *taxa_reprovacao_absoluta
# *taxa_reprovacao_frequencia
# *taxa_reprovacao_ultimo_absoluto
# *taxa_reprovacao_ultimo_frequencia
# *taxa_trancamento
# *qtd_alunos
# *qtd_trancamento
# *taxa_reprovacao_absoluta
# *taxa_reprovacao_frequencia
# *taxa_reprovacao_ultimo_absoluto
# *taxa_reprovacao_ultimo_frequencia
# *taxa_trancamento
##listas_disciplinas é dicionario com todas as disciplinas
#def taxas_gerais(df,ultima_turma_ingresso,lista_disciplina):
# df_quantidade = df.groupby(['COD_ATIV_CURRIC', 'SITUACAO']
# ).size().reset_index(name='Quantidades')
# 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 ==
# (sit.SIT_CANCELADO || sit.SIT_TRANCAMENTO_ADMINISTRATIVO ||
# sit.SIT_TRANCAMENTO_TOTAL) ]
# sit.SIT_TRANCAMENTO_TOTAL) ]
# qtd_trancamento = qtd_trancamento_df.sum
#
# qtd_conhecimento_aprov = quantidades.loc[quantidades.SITUACAO ==
# sit.SIT_CONHECIMENTO_APROVADO].Quantidade
# 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
# + qtd_conhecimento_reprov
# if qtd_conhecimento:
# taxa_conhecimento = qtd_conhecimento_aprov / listas_disciplinas[disciplina][qtd_conhecimento]
# taxa_conhecimento = qtd_conhecimento_aprov / listas_disciplinas[disciplina][qtd_conhecimento]
# else:
# taxa_conhecimento = -1
#
......@@ -147,15 +147,15 @@ from utils.situations import Situation as sit
#
def informacoes_gerais(df,lista_disciplinas):
#quantidade de matriculas
disciplinas = df.groupby(['COD_ATIV_CURRIC']).size()
disciplinas = df.groupby(['COD_ATIV_CURRIC']).size()
for disciplina in disciplinas.index:
disciplina_dict = {}
disciplina_df = df.loc[df.COD_ATIV_CURRIC == disciplina]
disciplina_dict['qtd_alunos'] = disciplinas[disciplina]
disciplina_dict['disciplina_codigo'] = disciplina
disciplina_dict = {}
disciplina_df = df.loc[df.COD_ATIV_CURRIC == disciplina]
disciplina_dict['qtd_alunos'] = disciplinas[disciplina]
disciplina_dict['disciplina_codigo'] = disciplina
disciplina_dict['disciplina_nome'] = \
disciplina_df.NOME_ATIV_CURRIC.values[0]
lista_disciplinas[disciplina] = disciplina_dict
disciplina_df.NOME_ATIV_CURRIC.values[0]
lista_disciplinas[disciplina] = disciplina_dict
# -nome da disciplina
# -codigo da disciplina
# -lista de disciplina
......@@ -164,45 +164,45 @@ def informacoes_gerais(df,lista_disciplinas):
# matriculas
def conhecimento(qtd,disciplina_dict):
conheci_df = qtd.loc[(qtd.SITUACAO == sit.SIT_CONHECIMENTO_APROVADO) |
(qtd.SITUACAO == sit.SIT_CONHECIMENTO_REPROVADO)]
total_conheci = conheci_df.qtd.sum()
(qtd.SITUACAO == sit.SIT_CONHECIMENTO_REPROVADO)]
total_conheci = conheci_df.qtd.sum()
if np.isnan(total_conheci):
total_conheci = 0
conheci_aprov = conheci_df.loc[conheci_df.SITUACAO == \
sit.SIT_CONHECIMENTO_APROVADO].set_index('COD_ATIV_CURRIC' )
disciplina_dict['qtd_conhecimento'] = total_conheci
sit.SIT_CONHECIMENTO_APROVADO].set_index('COD_ATIV_CURRIC' )
disciplina_dict['qtd_conhecimento'] = total_conheci
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:
disciplina_dict['taxa_conhecimento'] = 0.0
def trancamento(qtd,disciplina_dict,qtd_matr):
trancamento_df = qtd.loc[(qtd.SITUACAO == sit.SIT_TRANCAMENTO_ADMINISTRATIVO) |
(qtd.SITUACAO == sit.SIT_TRANCAMENTO_TOTAL) |
(qtd.SITUACAO == sit.SIT_CANCELADO)]
qtd_tranc = trancamento_df.qtd.sum()
trancamento_df = qtd.loc[(qtd.SITUACAO == sit.SIT_TRANCAMENTO_ADMINISTRATIVO) |
(qtd.SITUACAO == sit.SIT_TRANCAMENTO_TOTAL) |
(qtd.SITUACAO == sit.SIT_CANCELADO)]
qtd_tranc = trancamento_df.qtd.sum()
if np.isnan(qtd_tranc):
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
def reprovacao(qtd,disciplina,qtd_matr,taxa_reprov_absoluta,taxa_reprov_freq):
'''existe as analises reprovacao absoluta, reprovacao por frequencia e
def reprovacao(qtd,disciplina,qtd_matr,taxa_reprov_absoluta,taxa_reprov_freq):
'''existe as analises reprovacao absoluta, reprovacao por frequencia e
reprovacao absoluta, reprovacao por frequencia da ultima vez que a
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
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
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,)
reprov_df = qtd.loc[(qtd.SITUACAO == sit_reprov[0]) |
(qtd.SITUACAO == sit_reprov[1]) |
(qtd.SITUACAO == sit_reprov[2]) |
(qtd.SITUACAO == sit_reprov[3]) ]
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:
disciplina[taxa_reprov_absoluta] = 0.0 \
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):
if qtd_reprov_freq.empty else qtd_reprov_freq.qtd.values[0] / qtd_matr
else:
disciplina[taxa_reprov_absoluta] = 0.0
disciplina[taxa_reprov_freq] = 0.0
disciplina[taxa_reprov_freq] = 0.0
def analises_gerais(df,lista_disciplinas):
qtd_geral= df.groupby(['COD_ATIV_CURRIC','SITUACAO']).size().reset_index(name='qtd' )
print(df.columns)
qtd_geral= df.groupby(['COD_ATIV_CURRIC','SITUACAO']).size().reset_index(name='qtd' )
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():
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
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 = qtd_geral.loc[qtd_geral.COD_ATIV_CURRIC == disciplina]
qtd = qtd_geral.loc[qtd_geral.COD_ATIV_CURRIC == disciplina]
#faz analises relacionada ao conhecimento
conhecimento(qtd,disciplina_dict)
conhecimento(qtd,disciplina_dict)
# faz analises relacionada ao trancamento
trancamento(qtd,disciplina_dict,qtd_matriculas)
trancamento(qtd,disciplina_dict,qtd_matriculas)
# faz analises relacionada a reprovacoes
reprovacao(qtd,disciplina_dict,qtd_matriculas)
#print(disciplina_dict)
print("\n" )
reprovacao(qtd,disciplina_dict,qtd_matriculas,'taxa_reprovacao_absoluta','taxa_reprovacao_frequencia')
reprovacao(qtd_ultimo,disciplina_dict,qtd_matriculas,'taxa_reprovacao_ultimo_absoluta',
'taxa_reprovacao_ultimo_frequencia')
lista_disciplinas[disciplina].update(disciplina_dict)
#print(disciplina_dict)
# -qtd_conhecimento
# -qtd_trancamento
# -taxa_conhecimento
# -taxa_reprovacao_absoluta
# -taxa_reprovacao_frequencia
# *taxa_reprovacao_ultimo_absoluto
# *taxa_reprovacao_ultimo_frequencia
# -taxa_reprovacao_ultimo_absoluto
# -taxa_reprovacao_ultimo_frequencia
# -taxa_trancamento
# *nota geral desvio padrao geral
# *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
# *quantidade de matricula por semestre
def analises_disciplinas (df):
def analises_disciplinas(df):
lista_disciplinas = {}
informacoes_gerais(df,lista_disciplinas)
analises_gerais(df,lista_disciplinas)
# analises_semestrais(df,listas_disciplinas)
# """tranformar para json """
informacoes_gerais(df,lista_disciplinas)
analises_gerais(df,lista_disciplinas)
analises_semestrais(df,lista_disciplinas)
# """tranformar para json """
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment