From c71ce4cb129146a3b5bcff1955d48cf0d04ab4ab Mon Sep 17 00:00:00 2001
From: odair mario <badwolves123@gmail.com>
Date: Sun, 24 Dec 2017 01:42:21 -0200
Subject: [PATCH] funcao que cria os json pronto, falta fazer qnt/aprovacao e
 terminar disciplina.json

---
 script/analysis/course_analysis.py | 266 +++++++++++++++++------------
 1 file changed, 157 insertions(+), 109 deletions(-)

diff --git a/script/analysis/course_analysis.py b/script/analysis/course_analysis.py
index 18747d7..835abf4 100644
--- a/script/analysis/course_analysis.py
+++ b/script/analysis/course_analysis.py
@@ -1,5 +1,5 @@
-from datetime import datetime
 # -*- coding: utf-8 -*-
+from datetime import datetime
 import pprint
 import pandas as pd
 import json
@@ -17,8 +17,8 @@ from utils.situations import Situation as sit
 #    *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')
+#    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] 
 #        
@@ -39,97 +39,97 @@ from utils.situations import Situation as sit
 #            taxa_conhecimento = -1
 #
 #def print_analise(d):
-#    '''imprime todo o dataframe, por default o pandas so imprime as
+#    """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):
+#    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)
+#    """ 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()
+#    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 'SITUACAO' se repete para
-#    cada disciplina'''
-#    disciplinas = df.groupby(['COD_ATIV_CURRIC', 'SITUACAO']
-#                             ).size().reset_index(name='Quantidade')
-#    ''' adiciona mais uma coluna ao df disciplina com as taxas de cada valor
-#     de 'SITUACAO' '''
-#    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
+#    """ conta quantas vezes os valores de "SITUACAO" se repete para
+#    cada disciplina"""
+#    disciplinas = df.groupby(["COD_ATIV_CURRIC", "SITUACAO"]
+#                             ).size().reset_index(name="Quantidade")
+#    """ adiciona mais uma coluna ao df disciplina com as taxas de cada valor
+#     de "SITUACAO" """
+#    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
 #    # codigo que transforma o dataframe em um dicionario
 #    dict_disciplina = {}
 #    for dis in qnt_matr.keys():
 #         # separa o dataframe em disciplina
-#        disc = disciplina.loc[disciplina['COD_ATIV_CURRIC']==dis]
-#        disc = disc.drop('COD_ATIV_CURRIC',1) # elimina a coluna codigo
+#        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()
+#        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
+#            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')
+#    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:
+#        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()
+#    return df.groupby(["COD_ATIV_CURRIC", "PERIODO", "ANO"]).size()
 #
 #
 #def func_semestre(x, matr):
 #    # print (matr)
-#    ano = int(x['ANO'])
+#    ano = int(x["ANO"])
 #    # print(ano)
-#    periodo = x['PERIODO'].values[0]
-#    disciplina = x['COD_ATIV_CURRIC'].values[0]
+#    periodo = x["PERIODO"].values[0]
+#    disciplina = x["COD_ATIV_CURRIC"].values[0]
 #    c = matr[disciplina,periodo,ano]
-#    return (x['counts_semestre'] / c)
+#    return (x["counts_semestre"] / c)
 #
 #
 #def analysis_semestre(df):
 #    qnt_matr_semestre = matr_semestre(df)
-#    discipline_semestre = df.groupby(['COD_ATIV_CURRIC', 'PERIODO', 'ANO', 'SITUACAO'])
+#    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.reset_index(name="counts_semestre")
 #
-#    discipline_semestre = discipline_semestre.groupby(['COD_ATIV_CURRIC', 'PERIODO', 'ANO', 'SITUACAO'])
+#    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')
+#    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)
+#        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'))
+#        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:
+#        disc = disc.set_index("ANO").to_dict("index")
+#        # with open(dis+".json","w") as f:
 #            # json.dump(disc,f,indent=4)
 #        print("--------------------------------------------------------------------------------")
 #
@@ -149,13 +149,13 @@ 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_nome'] = \
+        disciplina_dict["qtd_alunos"] = int(disciplinas[disciplina])   
+        disciplina_dict["disciplina_codigo"] = disciplina 
+        disciplina_dict["disciplina_nome"] = \
         disciplina_df.NOME_ATIV_CURRIC.values[0]    
         lista_disciplinas[disciplina] = disciplina_dict 
 #    -nome da disciplina
@@ -171,13 +171,14 @@ def conhecimento(qtd,disciplina_dict):
     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"] = int(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"] = float(conheci_aprov.qtd.values[0] /
+                total_conheci)
     else:
-        disciplina_dict['taxa_conhecimento'] = 0.0
+        disciplina_dict["taxa_conhecimento"] = 0.0
 
 def trancamento(qtd,disciplina_dict,qtd_matr):
     trancamento_df = qtd.loc[(qtd.SITUACAO == sit.SIT_TRANCAMENTO_ADMINISTRATIVO) | 
@@ -186,16 +187,16 @@ def trancamento(qtd,disciplina_dict,qtd_matr):
     qtd_tranc = trancamento_df.qtd.sum() 
     if np.isnan(qtd_tranc):
         qtd_tranc = 0
-    disciplina_dict['qtd_trancamento'] = qtd_tranc 
-    disciplina_dict['taxa_trancamento'] = qtd_tranc / qtd_matr if qtd_matr else 0.0
+    disciplina_dict["qtd_trancamento"] = int(qtd_tranc) 
+    disciplina_dict["taxa_trancamento"] = float(qtd_tranc / qtd_matr) if qtd_matr else 0.0
 
  
 def reprovacao(qtd,disciplina,qtd_matr,taxa_reprov_absoluta,taxa_reprov_freq): 
-    '''existem as analises reprovacao absoluta, reprovacao por frequencia,  
+    """existem as analises reprovacao absoluta, reprovacao por frequencia,  
     reprovacao absoluta, reprovacao por frequencia da ultima vez que a
     disciplina foi ofertada, a logica das analise sao a mesma so muda os valores
     do dataframe qtd e o nomes das chaves do dicionario,logo é possível 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.""" 
     sit_reprov = sit.SITUATION_FAIL + (sit.SIT_REPROVADO_SEM_NOTA,)
     reprov_df = qtd.loc[(qtd.SITUACAO == sit_reprov[0]) |
                         (qtd.SITUACAO == sit_reprov[1]) |
@@ -204,46 +205,57 @@ def reprovacao(qtd,disciplina,qtd_matr,taxa_reprov_absoluta,taxa_reprov_freq):
     qtd_reprov_abso = reprov_df.qtd.sum() #quantidade de reprovacao absoluta
     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
-        disciplina[taxa_reprov_freq] = 0.0 \
-                if qtd_reprov_freq.empty else qtd_reprov_freq.qtd.values[0] / qtd_matr
+        if np.isnan(qtd_reprov_abso): 
+            disciplina[taxa_reprov_absoluta] = 0.0
+        else:
+            disciplina[taxa_reprov_absoluta] = float(qtd_reprov_abso / qtd_matr)
+
+        if qtd_reprov_freq.empty:
+            disciplina[taxa_reprov_freq] = 0.0 
+        else:
+            disciplina[taxa_reprov_freq] = float(qtd_reprov_freq.qtd.values[0] / qtd_matr)
+
     else:
         disciplina[taxa_reprov_absoluta] = 0.0
         disciplina[taxa_reprov_freq] = 0.0 
 
-def nota(notas,disciplina,index):
-    notas_l = [] 
-    for i in notas.iterrows():
+def nota(notas_df,disciplina,index):
+    notas = [] 
+    for i in notas_df.iterrows():
         if i[1].SITUACAO in sit.SITUATION_AFFECT_IRA:
-            if not(np.isnan(i[1].MEDIA_FINAL)):
-                notas_l.append(i[1].MEDIA_FINAL) 
-    notas_np = np.array(notas_l) 
-    media = notas_np.mean() 
-    desvio= notas_np.std() 
-    disciplina[index] = [0 if np.isnan(media) else media, 0 if np.isnan(desvio) else desvio]  
+            nota = 0 if np.isnan(i[1].MEDIA_FINAL) else i[1].MEDIA_FINAL  
+            notas.append(nota) 
 
+    if len(notas) != 0: 
+        notas_np = np.array(notas) 
+        media_np = np.mean(notas_np) 
+        desvio_np = np.std(notas_np) 
+        media = 0.0 if np.isnan(media_np) else media_np 
+        desvio = 0.0 if np.isnan(desvio_np) else desvio_np 
+        disciplina[index] = [media,desvio]  
+    else:
+        disciplina[index] = [0.0,0.0]  
 
 
 def analises_gerais(df,lista_disciplinas):
-    ''' Os dataframes qtd_geral e qtd_ultimo_geral são dataframes que possuem
+    """ Os dataframes qtd_geral e qtd_ultimo_geral são dataframes que possuem
         as colunas em comun COD_ATIV_CURRIC e SITUACAO, o qtd_ultimo_geral
         possuem as colunas ano e periodo.Ambos os dataframes possui a coluna qtd
-        que é a quantidade de vezes que cada situacao se repete por disciplina''' 
-    qtd_geral= df.groupby(['COD_ATIV_CURRIC','SITUACAO']).size().reset_index(name='qtd' ) 
+        que é a quantidade de vezes que cada situacao se repete por disciplina""" 
+    qtd_geral= df.groupby(["COD_ATIV_CURRIC","SITUACAO"]).size().reset_index(name="qtd" ) 
     qtd_ultimo_geral = \
-    df.groupby(['COD_ATIV_CURRIC','SITUACAO','ANO']).size().reset_index(name='qtd')  
+    df.groupby(["COD_ATIV_CURRIC","SITUACAO","ANO"]).size().reset_index(name="qtd")  
     matr_por_semestre = \
-    df.groupby(['COD_ATIV_CURRIC','ANO']).size().reset_index(name='matr') 
-    ''' dataframe com a quantidade de matriculas por periodo e ano, por exemplo
-    disciplina ci055 2010/1 teve x matriculas''' 
-    '''Dataframes relacionado a notas.O campo qtd é inutil, o groupby pede se
+    df.groupby(["COD_ATIV_CURRIC","ANO"]).size().reset_index(name="matr") 
+    """ dataframe com a quantidade de matriculas por periodo e ano, por exemplo
+    disciplina ci055 2010/1 teve x matriculas""" 
+    """Dataframes relacionado a notas.O campo qtd é inutil, o groupby pede se
     que se use um apply sobre o groupby, pois se não o grouby é tratado como
-    objeto e não como um dataframe  ''' 
-    nota_geral_df = df.groupby(['COD_ATIV_CURRIC','MEDIA_FINAL', 'SITUACAO',
-            ]).size().reset_index(name = 'qtd' )  
-    nota_semestral_df = df.groupby(['COD_ATIV_CURRIC','ANO', 'MEDIA_FINAL', 'SITUACAO',
-            ]).size().reset_index(name = 'qtd' )  
+    objeto e não como um dataframe  """ 
+    nota_geral_df = df.groupby(["COD_ATIV_CURRIC","MEDIA_FINAL", "SITUACAO",
+            ]).size().reset_index(name = "qtd" )  
+    nota_semestral_df = df.groupby(["COD_ATIV_CURRIC","ANO", "MEDIA_FINAL", "SITUACAO",
+            ]).size().reset_index(name = "qtd" )  
     for disciplina in lista_disciplinas.keys():
         disciplina_dict = {} #facilitar os calculos 
 
@@ -258,14 +270,8 @@ def analises_gerais(df,lista_disciplinas):
 
 
         #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]
-        if qtd_matr_ultimo.empty:
-            qtd_matr_ultimo = -1
-        else:
-             qtd_matr_ultimo = qtd_matr_ultimo.matr.values[0] 
 
         #qtd é um dataframe que contem a ocorrencia de cada situacao
         qtd  = qtd_geral.loc[qtd_geral.COD_ATIV_CURRIC == disciplina] 
@@ -277,13 +283,16 @@ def analises_gerais(df,lista_disciplinas):
         trancamento(qtd,disciplina_dict,qtd_matriculas) 
 
         # faz analises relacionada a reprovacoes
-        reprovacao(qtd,disciplina_dict,qtd_matriculas,'taxa_reprovacao_absoluta','taxa_reprovacao_frequencia') 
-        if qtd_matr_ultimo == -1: 
-            disciplina_dict['taxa_reprovacao_ultimo_absoluta'] = -1  
-            disciplina_dict['taxa_reprovacao_ultimo_frequencia'] = -1  
+        reprovacao(qtd,disciplina_dict,qtd_matriculas,"taxa_reprovacao_absoluta","taxa_reprovacao_frequencia") 
+        qtd_matr_ultimo = matr_por_semestre.loc[(matr_por_semestre.COD_ATIV_CURRIC \
+            == disciplina) & matr_por_semestre.ANO == ano]
+
+        if qtd_matr_ultimo.empty: #caso a disciplina nao foi ofertada no ultimo ano
+            disciplina_dict["taxa_reprovacao_ultimo_absoluta"] = -1  
+            disciplina_dict["taxa_reprovacao_ultimo_frequencia"] = -1  
         else:
-            reprovacao(qtd_ultimo,disciplina_dict,qtd_matriculas,'taxa_reprovacao_ultimo_absoluta',
-                    'taxa_reprovacao_ultimo_frequencia') 
+            reprovacao(qtd_ultimo,disciplina_dict,qtd_matriculas,"taxa_reprovacao_ultimo_absoluta",
+                    "taxa_reprovacao_ultimo_frequencia") 
 
         #faz as analises relacionada a nota
         nota_df = nota_geral_df.loc[nota_geral_df.COD_ATIV_CURRIC == disciplina] 
@@ -291,10 +300,10 @@ def analises_gerais(df,lista_disciplinas):
         nota_ultimo = nota_por_semestre_df.loc[nota_por_semestre_df.ANO ==
                 ano] 
 
-        nota(nota_df,disciplina_dict,'nota') 
+        nota(nota_df,disciplina_dict,"nota") 
         if nota_ultimo.empty:
-            disciplina_dict['nota_ultimo_ano'] = -1 
-        nota(nota_ultimo,disciplina_dict,'nota_ultimo_ano') 
+            disciplina_dict["nota_ultimo_ano"] = -1 
+        nota(nota_ultimo,disciplina_dict,"nota_ultimo_ano") 
 
 
         lista_disciplinas[disciplina].update(disciplina_dict)
@@ -308,12 +317,13 @@ def analises_gerais(df,lista_disciplinas):
 #   -taxa_trancamento
 #   -nota geral desvio padrao geral
 #   -nota ultima vez ofertado e desvio padrao
+#   *cursada ate a aprovacao
 def analises_semestrais(df,lista_disciplinas):
     geral_df = \
-    df.groupby(['COD_ATIV_CURRIC','ANO','PERIODO']).size().reset_index(name
-            = 'matr' ) 
-    df_semestral = df.groupby(['COD_ATIV_CURRIC', 'ANO', 'PERIODO' ,
-        'MEDIA_FINAL','SITUACAO']).size().reset_index(name = 'qtds' ) 
+    df.groupby(["COD_ATIV_CURRIC","ANO","PERIODO"]).size().reset_index(name
+            = "matr" ) 
+    df_semestral = df.groupby(["COD_ATIV_CURRIC", "ANO", "PERIODO" ,
+        "MEDIA_FINAL","SITUACAO"]).size().reset_index(name = "qtds" ) 
     disciplinas = {} 
     for count,i in enumerate(df_semestral.iterrows()): 
         disciplina = i[1].COD_ATIV_CURRIC
@@ -333,19 +343,57 @@ def analises_semestrais(df,lista_disciplinas):
         for ano_periodo in disciplinas[disciplina].keys():  
             media = disciplinas[disciplina][ano_periodo][0]
             qtd = disciplinas[disciplina][ano_periodo][1]
-            disciplinas[disciplina][ano_periodo][0] = 0.0 if qtd == 0 \
-                    else media / qtd
-
+            if qtd != 0:
+                disciplinas[disciplina][ano_periodo][0] = media / qtd   
+            else:
+                disciplinas[disciplina][ano_periodo][0] = 0.0
         aprovacao_semestral = disciplinas[disciplina]   
-        lista_disciplinas[disciplina]['aprovacao_semestral'] = aprovacao_semestral
+        lista_disciplinas[disciplina]["aprovacao_semestral"] = aprovacao_semestral
 #    -taxa aprovacao semestral
 #    -quantidade de matricula por semestre
+def transforma_json(lista_disciplinas):
+    for disciplina in lista_disciplinas.keys():
+        disciplina_dict =lista_disciplinas[disciplina] 
+        # for item in disciplina_dict.keys(): 
+        #     print(item) 
+        #     print(disciplina_dict[item])
+        #     print(type(disciplina_dict[item])) 
+        with open('cache/'+disciplina+'.json','w') as f:
+            f.write(json.dumps(lista_disciplinas[disciplina],indent=4))
+def listagem_disciplina(lista_disciplinas):
+    listagem = {} 
+    cache = {} 
+    compara_aprov = {} 
+    disciplinas = {} 
+    # nota media de todas as disciplinas
+    #n 
+    for disciplina in lista_disciplinas.keys(): 
+        disciplina_dict = lista_disciplinas[disciplina] 
+        cache[disciplina] = {"nota":disciplina_dict["nota"],
+                "taxa_reprovacao_absoluta":disciplina_dict["taxa_reprovacao_absoluta"],
+                "taxa_reprovacao_frequencia": disciplina_dict["taxa_reprovacao_frequencia" ],
+                "taxa_trancamento":disciplina_dict["taxa_trancamento"]}  
+        compara_disciplina = [] 
+        for ano in disciplina_dict["aprovacao_semestral"].keys():  
+            aprov_por_ano = [ano,disciplina_dict["aprovacao_semestral"][ano][0]] 
+            compara_disciplina.append(aprov_por_ano) 
+        compara_aprov[disciplina] = compara_disciplina 
+        disciplinas[disciplina] = disciplina_dict["disciplina_nome"]  
+        listagem = {cache:cache,compara_aprov:
+                compara_aprov,disciplinas:disciplinas} 
+        with open("cache/disciplinas.json",'w') as f:
+            f.write(json.dumps(listagem,indent=4)) 
+        
+
 def analises_disciplinas(df):
     lista_disciplinas = {}
     informacoes_gerais(df,lista_disciplinas) 
     analises_gerais(df,lista_disciplinas) 
     analises_semestrais(df,lista_disciplinas) 
-    for disciplina in lista_disciplinas.keys(): 
-        pprint.pprint(lista_disciplinas[disciplina] ) 
-        print("---------------------------------------" ) 
+    transforma_json(lista_disciplinas) 
+    listagem_disciplina(lista_disciplinas) 
+
+#    for disciplina in lista_disciplinas.keys(): 
+#        pprint.pprint(lista_disciplinas[disciplina] ) 
+#        print("---------------------------------------" ) 
 #    """tranformar para json """ 
-- 
GitLab