Commit 06ac4ae0 authored by Bruno Meyer's avatar Bruno Meyer
Browse files

fix (correcao das coisas apagadaS)

parent c2402558
cache/*
*.json
import numpy as np
from utils.situations import *
ANO_ATUAL = 2017
SEMESTRE_ATUAL = 2
def listagem_turma_ingresso(df):
#~ print(df.groupby(["ANO_INGRESSO", "SEMESTRE_INGRESSO"]).groups)
grupos = df.groupby(["ANO_INGRESSO", "SEMESTRE_INGRESSO"]).groups
for t in grupos:
print(t)
print("\n\n")
print(df["FORMA_INGRESSO"][grupos[t]].drop_duplicates())
def listagem_alunos_ativos(df):
return list(df["MATR_ALUNO"][df["FORMA_EVASAO"] == EvasionForm.EF_ATIVO].drop_duplicates())
def posicao_turmaIngresso_semestral(df):
iras = ira_semestral(df)
iraMax = {}
for matr in iras:
for semestreAno in iras[matr]:
if not (semestreAno in iraMax):
iraMax[semestreAno] = iras[matr][semestreAno]
else:
if (iras[matr][semestreAno] > iraMax[semestreAno]):
iraMax[semestreAno] = iras[matr][semestreAno]
for matr in iras:
for semestreAno in iras[matr]:
iras[matr][semestreAno] /= iraMax[semestreAno]
return iras
def periodo_real(df):
aux = df.groupby(["MATR_ALUNO"])
students = {}
for x in aux:
students[x[0]] = None
return students
def periodo_pretendido(df):
aux = df.groupby(["MATR_ALUNO", "ANO_INGRESSO", "SEMESTRE_INGRESSO"])
students = {}
for x in aux:
students[x[0][0]] = (ANO_ATUAL - int(x[0][1])) * 2 + SEMESTRE_ATUAL - int(x[0][2]) + 1
return students
def ira_semestral(df):
aux = ira_por_quantidade_disciplinas(df)
for matr in aux:
for periodo in aux[matr]:
aux[matr][periodo] = aux[matr][periodo][0]
return aux
def ira_por_quantidade_disciplinas(df):
students = {}
df = df.dropna(subset=["MEDIA_FINAL"])
total_students = len(df["MATR_ALUNO"])
for i in range(total_students):
matr = (df["MATR_ALUNO"][i])
if (not (matr in students)):
students[matr] = {}
ano = str(int(df["ANO"][i]))
semestre = str(df["PERIODO"][i])
situacao = int(df["SITUACAO"][i])
nota = float(df["MEDIA_FINAL"][i])
media_credito = int(df["MEDIA_CREDITO"][i])
if (situacao in Situation.SITUATION_AFFECT_IRA and media_credito != 0):
if not (ano + "/" + semestre in students[matr]):
students[matr][ano + "/" + semestre] = [0, 0]
students[matr][ano + "/" + semestre][0] += nota
students[matr][ano + "/" + semestre][1] += 1
for matr in students:
for periodo in students[matr]:
if (students[matr][periodo][1] != 0):
students[matr][periodo][0] /= students[matr][periodo][1] * 100
return (students)
def indice_aprovacao_semestral(df):
students = {}
df = df.dropna(subset=['MEDIA_FINAL'])
total_students = len(df["MATR_ALUNO"])
for i in range(total_students):
matr = (df["MATR_ALUNO"][i])
if (not (matr in students)):
students[matr] = {}
ano = str(int(df["ANO"][i]))
semestre = str(df["PERIODO"][i])
situacao = int(df["SITUACAO"][i])
if not (ano + "/" + semestre in students[matr]):
students[matr][ano + "/" + semestre] = [0, 0]
if situacao in Situation.SITUATION_PASS:
students[matr][ano + "/" + semestre][0] += 1
students[matr][ano + "/" + semestre][1] += 1
if situacao in Situation.SITUATION_FAIL:
students[matr][ano + "/" + semestre][1] += 1
return (students)
def aluno_turmas(df):
students = {}
df = df.dropna(subset=['MEDIA_FINAL'])
situations = dict(Situation.SITUATIONS)
for matr, hist in df.groupby('MATR_ALUNO'):
students[matr] = []
for _, row in hist.iterrows():
data = {
'ano': str(int(row["ANO"])),
'codigo': row["COD_ATIV_CURRIC"],
'nome': row["NOME_ATIV_CURRIC"],
'nota': row["MEDIA_FINAL"],
'semestre': row["PERIODO"],
'situacao': situations.get(row["SITUACAO"], Situation.SIT_OUTROS)
}
students[matr].append(data)
return students
......@@ -2,6 +2,7 @@ from utils.utils import *
from utils.situations import *
from analysis.degree_analysis import *
from analysis.student_analysis import *
from analysis.admission_analysis import *
try:
......@@ -13,13 +14,13 @@ except NameError:
def build_cache(dataframe):
# os.chdir("../src")
path = 'cache/curso'
ensure_path_exists(path)
for cod, df in dataframe.groupby('COD_CURSO'):
generate_degree_data(path+'/'+cod+'/', df)
generate_student_data(path+'/'+cod+'/students/',df)
#~ generate_admission_data(path+'/'+cod+'/admission/',df)
#generate_degree_data(path, dataframe)
#generate_student_data(path, dataframe)
#generate_student_list(path)
......@@ -112,14 +113,15 @@ def generate_student_data(path, dataframe):
for a in analises: # Usar para fazer a verificacao de
student_data[x][a[1]] = a[0][x] # analises nulas para um GRR
save_json(path+x, student_data[x][a[1]])
save_json(path+x+".json", student_data[x])
#Falta verificar se alguem nao recebeu algumas analises
def generate_student_list(path):
pass
def generate_admission_data(path):
def generate_admission_data(path,df):
listagem_turma_ingresso(df)
pass
def generate_admission_list(path):
......
[
{
"nota": 45.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "CI055",
"ano": "2001",
"nome": "ALGORITMOS E ESTRUTURAS DE DADOS I"
},
{
"nota": 45.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "CM201",
"ano": "2001",
"nome": "CALCULO DIFERENCIAL E INTEGRAL I"
},
{
"nota": 95.0,
"semestre": "2",
"situacao": "Aprovado",
"codigo": "CM045",
"ano": "2001",
"nome": "Geometria Anal\u00edtica"
},
{
"nota": 50.0,
"semestre": "2",
"situacao": "Aprovado",
"codigo": "CM046",
"ano": "2001",
"nome": "INTRODUCAO A ALGEBRA"
},
{
"nota": 64.0,
"semestre": "2",
"situacao": "Aprovado",
"codigo": "CI063",
"ano": "2001",
"nome": "MAQUINAS PROGRAMAVEIS"
},
{
"nota": 66.0,
"semestre": "2",
"situacao": "Aprovado",
"codigo": "CI066",
"ano": "2001",
"nome": "OFICINA DE PROGRAMACAO"
},
{
"nota": 28.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CM005",
"ano": "2002",
"nome": "\u00c1lgebra Linear"
},
{
"nota": 89.0,
"semestre": "1",
"situacao": "Aprovado",
"codigo": "CI055",
"ano": "2002",
"nome": "ALGORITMOS E ESTRUTURAS DE DADOS I"
},
{
"nota": 46.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CM201",
"ano": "2002",
"nome": "CALCULO DIFERENCIAL E INTEGRAL I"
},
{
"nota": 50.0,
"semestre": "1",
"situacao": "Aprovado",
"codigo": "CI068",
"ano": "2002",
"nome": "CIRCUITOS LOGICOS"
},
{
"nota": 79.0,
"semestre": "1",
"situacao": "Aprovado",
"codigo": "CE003",
"ano": "2002",
"nome": "Estat\u00edstica II"
},
{
"nota": 11.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "CI056",
"ano": "2002",
"nome": "ALGORITMOS E ESTRUTURAS DE DADOS II"
},
{
"nota": 52.0,
"semestre": "2",
"situacao": "Aprovado",
"codigo": "CM201",
"ano": "2002",
"nome": "CALCULO DIFERENCIAL E INTEGRAL I"
},
{
"nota": 28.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "SA214",
"ano": "2002",
"nome": "INTRODUCAO A TEORIA GERAL DA ADMINISTRACAO"
},
{
"nota": 9.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "CI237",
"ano": "2002",
"nome": "MATEMATICA DISCRETA"
},
{
"nota": 0.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "CI210",
"ano": "2002",
"nome": "PROJETOS DIGITAIS E MICROPROCESSADORES"
},
{
"nota": 0.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "CI064",
"ano": "2002",
"nome": "SOFTWARE BASICO I"
},
{
"nota": 70.0,
"semestre": "1",
"situacao": "Aprovado",
"codigo": "CI069",
"ano": "2003",
"nome": "ADMINISTRACAO DE EMPRESAS DE INFORMATICA"
},
{
"nota": 20.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CM005",
"ano": "2003",
"nome": "\u00c1lgebra Linear"
},
{
"nota": 29.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CI056",
"ano": "2003",
"nome": "ALGORITMOS E ESTRUTURAS DE DADOS II"
},
{
"nota": 10.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CM202",
"ano": "2003",
"nome": "CALCULO DIFERENCIAL E INTEGRAL II"
},
{
"nota": 0.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CI237",
"ano": "2003",
"nome": "MATEMATICA DISCRETA"
},
{
"nota": 29.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CI067",
"ano": "2003",
"nome": "OFICINA DE COMPUTACAO"
},
{
"nota": 0.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CI210",
"ano": "2003",
"nome": "PROJETOS DIGITAIS E MICROPROCESSADORES"
},
{
"nota": 0.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "CI061",
"ano": "2004",
"nome": "REDE DE COMPUTADORES II"
},
{
"nota": 9999.0,
"semestre": "1",
"situacao": "Trancamento Administrativo",
"codigo": "TRT002",
"ano": "2005",
"nome": "Trancamento Extra"
},
{
"nota": 9999.0,
"semestre": "2",
"situacao": "Trancamento Administrativo",
"codigo": "TRT002",
"ano": "2005",
"nome": "Trancamento Extra"
},
{
"nota": 9999.0,
"semestre": "1",
"situacao": "Trancamento Administrativo",
"codigo": "TRT002",
"ano": "2006",
"nome": "Trancamento Extra"
},
{
"nota": 9999.0,
"semestre": "2",
"situacao": "Trancamento Administrativo",
"codigo": "TRT002",
"ano": "2006",
"nome": "Trancamento Extra"
},
{
"nota": 9999.0,
"semestre": "1",
"situacao": "Trancamento Administrativo",
"codigo": "TRT002",
"ano": "2007",
"nome": "Trancamento Extra"
},
{
"nota": 9999.0,
"semestre": "2",
"situacao": "Trancamento Administrativo",
"codigo": "TRT002",
"ano": "2007",
"nome": "Trancamento Extra"
},
{
"nota": 10.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CM005",
"ano": "2008",
"nome": "\u00c1lgebra Linear"
},
{
"nota": 0.0,
"semestre": "1",
"situacao": "Reprovado por Frequ\u00eancia",
"codigo": "CI056",
"ano": "2008",
"nome": "ALGORITMOS E ESTRUTURAS DE DADOS II"
},
{
"nota": 9999.0,
"semestre": "1",
"situacao": "Cancelado",
"codigo": "CM202",
"ano": "2008",
"nome": "CALCULO DIFERENCIAL E INTEGRAL II"
},
{
"nota": 17.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CI067",
"ano": "2008",
"nome": "OFICINA DE COMPUTACAO"
},
{
"nota": 5.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "CM005",
"ano": "2008",
"nome": "\u00c1lgebra Linear"
},
{
"nota": 61.0,
"semestre": "2",
"situacao": "Aprovado",
"codigo": "CI056",
"ano": "2008",
"nome": "ALGORITMOS E ESTRUTURAS DE DADOS II"
},
{
"nota": 51.83,
"semestre": "2",
"situacao": "Aprovado",
"codigo": "CI067",
"ano": "2008",
"nome": "OFICINA DE COMPUTACAO"
},
{
"nota": 21.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CM005",
"ano": "2009",
"nome": "\u00c1lgebra Linear"
},
{
"nota": 30.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CI237",
"ano": "2009",
"nome": "MATEMATICA DISCRETA"
},
{
"nota": 13.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CI210",
"ano": "2009",
"nome": "PROJETOS DIGITAIS E MICROPROCESSADORES"
},
{
"nota": 32.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "CM005",
"ano": "2009",
"nome": "\u00c1lgebra Linear"
},
{
"nota": 66.0,
"semestre": "2",
"situacao": "Aprovado",
"codigo": "SA214",
"ano": "2009",
"nome": "INTRODUCAO A TEORIA GERAL DA ADMINISTRACAO"
},
{
"nota": 29.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "CI237",
"ano": "2009",
"nome": "MATEMATICA DISCRETA"
},
{
"nota": 51.0,
"semestre": "2",
"situacao": "Aprovado",
"codigo": "CI210",
"ano": "2009",
"nome": "PROJETOS DIGITAIS E MICROPROCESSADORES"
},
{
"nota": 19.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CM005",
"ano": "2010",
"nome": "\u00c1lgebra Linear"
},
{
"nota": 10.0,
"semestre": "1",
"situacao": "Reprovado por nota",
"codigo": "CM202",
"ano": "2010",
"nome": "CALCULO DIFERENCIAL E INTEGRAL II"
},
{
"nota": 8.0,
"semestre": "1",
"situacao": "Reprovado por Frequ\u00eancia",
"codigo": "CI237",
"ano": "2010",
"nome": "MATEMATICA DISCRETA"
},
{
"nota": 9999.0,
"semestre": "2",
"situacao": "Trancamento Total",
"codigo": "CM005",
"ano": "2010",
"nome": "\u00c1lgebra Linear"
},
{
"nota": 9999.0,
"semestre": "2",
"situacao": "Trancamento Total",
"codigo": "CI237",
"ano": "2010",
"nome": "MATEMATICA DISCRETA"
},
{
"nota": 9999.0,
"semestre": "2",
"situacao": "Trancamento Total",
"codigo": "CI064",
"ano": "2010",
"nome": "SOFTWARE BASICO I"
},
{
"nota": 9999.0,
"semestre": "2",
"situacao": "Trancamento Total",
"codigo": "TRT001",
"ano": "2010",
"nome": "TRANCAMENTO TOTAL"
},
{
"nota": 9999.0,
"semestre": "1",
"situacao": "Trancamento Total",
"codigo": "TRT001",
"ano": "2011",
"nome": "TRANCAMENTO TOTAL"
},
{
"nota": 52.0,
"semestre": "2",
"situacao": "Aprovado",
"codigo": "CM005",
"ano": "2011",
"nome": "\u00c1lgebra Linear"
},
{
"nota": 13.0,
"semestre": "2",
"situacao": "Reprovado por nota",
"codigo": "CM202",