diff --git a/script/analysis/course_analysis.py b/script/analysis/course_analysis.py
index f1de206ce680a6d141afbf1a498de718d0b377f2..9fc482ca42f5ebf76978e3da78e8b88bce4bb026 100644
--- a/script/analysis/course_analysis.py
+++ b/script/analysis/course_analysis.py
@@ -2,112 +2,251 @@
 import pandas as pd
 import json
 import numpy as np
-from utils.situations import *
-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 '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
-        # seta a coluna SITUACAO como index
-        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
-        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')
-    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:
-            json.dump(disc,f,indent=4)
-
-def matr_semestre(df):
-    return df.groupby(['COD_ATIV_CURRIC', 'PERIODO', 'ANO']).size()
-
-
-def func_semestre(x, matr):
-    # print (matr)
-    ano = int(x['ANO'])
-    # print(ano)
-    periodo = x['PERIODO'].values[0]
-    disciplina = x['COD_ATIV_CURRIC'].values[0]
-    c = matr[disciplina,periodo,ano]
-    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 = discipline_semestre.size()
-
-    discipline_semestre = discipline_semestre.reset_index(name='counts_semestre')
-
-    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')
-    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)
-        print(dis[0])
-        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:
-            # json.dump(disc,f,indent=4)
-        print("--------------------------------------------------------------------------------")
-
-        break
-    return discipline_semestre
-
-
-
-def Main(df):
-
-    # Analysis = analysis(df)
-    Analysis_semestre = analysis_semestre(df)
-    # matr = counts_matr(df)
-    # df_to_json(Analysis,matr)
-    # matr_semes = matr_semestre(df)
-    # print_analise(matr_semes)
+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
+##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]
+#
+#        qtd_trancamento_df =quantidades.loc[quantidades.SITUACAO ==
+#                (sit.SIT_CANCELADO || sit.SIT_TRANCAMENTO_ADMINISTRATIVO ||
+#                    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
+#        lista_disciplina[disciplina][qtd_conhecimento] = qtd_conhecimento_aprov
+#        + qtd_conhecimento_reprov
+#        if qtd_conhecimento:
+#            taxa_conhecimento = qtd_conhecimento_aprov / listas_disciplinas[disciplina][qtd_conhecimento]
+#        else:
+#            taxa_conhecimento = -1
+#
+#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 '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
+#        # seta a coluna SITUACAO como index
+#        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
+#        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')
+#    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:
+#            json.dump(disc,f,indent=4)
+#
+#def matr_semestre(df):
+#    return df.groupby(['COD_ATIV_CURRIC', 'PERIODO', 'ANO']).size()
+#
+#
+#def func_semestre(x, matr):
+#    # print (matr)
+#    ano = int(x['ANO'])
+#    # print(ano)
+#    periodo = x['PERIODO'].values[0]
+#    disciplina = x['COD_ATIV_CURRIC'].values[0]
+#    c = matr[disciplina,periodo,ano]
+#    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 = discipline_semestre.size()
+#
+#    discipline_semestre = discipline_semestre.reset_index(name='counts_semestre')
+#
+#    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')
+#    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)
+#        print(dis[0])
+#        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:
+#            # json.dump(disc,f,indent=4)
+#        print("--------------------------------------------------------------------------------")
+#
+#        break
+#    return discipline_semestre
+#
+#
+#
+#def Main(df):
+#
+#    # Analysis = analysis(df)
+#    Analysis_semestre = analysis_semestre(df)
+#    # matr = counts_matr(df)
+#    # df_to_json(Analysis,matr)
+#    # matr_semes = matr_semestre(df)
+#    # pprint_analise(matr_semes)
+#
+def informacoes_gerais(df,lista_disciplinas):
+    #quantidade de matriculas
+    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_df.NOME_ATIV_CURRIC.values[0]
+        lista_disciplinas[disciplina] = disciplina_dict
+#    -nome da disciplina
+#    -codigo da disciplina
+#    -lista de disciplina
+#    -quantidade de matriculas
+#    -retorna um dicionario de disciplina, cada disciplina com quantidade de
+#    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()
+    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
+
+    if (total_conheci !=0) and (not conheci_aprov.empty):
+        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()
+    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
+
+
+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'''
+    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]]
+    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
+    else:
+        disciplina[taxa_reprov_absoluta] = 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)
+    for disciplina in lista_disciplinas.keys():
+        disciplina_dict = {}
+        disciplina_df = df.loc[df.COD_ATIV_CURRIC == disciplina]
+        #quantidade de alunos
+        qtd_matriculas = lista_disciplinas[disciplina]['qtd_alunos']
+        #qtd eh um dataframe que contem a ocorrencia de cada situacao
+        qtd  = qtd_geral.loc[qtd_geral.COD_ATIV_CURRIC == disciplina]
+        #faz analises relacionada ao conhecimento
+        conhecimento(qtd,disciplina_dict)
+        # faz analises relacionada ao trancamento
+        trancamento(qtd,disciplina_dict,qtd_matriculas)
+        # faz analises relacionada a reprovacoes
+        reprovacao(qtd,disciplina_dict,qtd_matriculas)
+        #print(disciplina_dict)
+        print("\n" )
+#   -qtd_conhecimento
+#   -qtd_trancamento
+#   -taxa_conhecimento
+#   -taxa_reprovacao_absoluta
+#   -taxa_reprovacao_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()
+#    *taxa aprovacao semestral
+#    *quantidade de matricula por semestre
+def analises_disciplinas (df):
+    lista_disciplinas = {}
+    informacoes_gerais(df,lista_disciplinas)
+    analises_gerais(df,lista_disciplinas)
+#    analises_semestrais(df,listas_disciplinas)
+#    """tranformar para json """
diff --git a/script/analysis/student_analysis.py b/script/analysis/student_analysis.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..326e5bc3e459a503860d12da43699e3a773cde85 100644
--- a/script/analysis/student_analysis.py
+++ b/script/analysis/student_analysis.py
@@ -0,0 +1,63 @@
+import pandas as pd
+from utils.situations import *
+
+def average_ira(d):
+    temp = d.dropna(subset=['MEDIA_FINAL'])
+    temp = temp[temp['MEDIA_FINAL'] <= 100]
+    if not temp.empty:
+        #print(temp[['MEDIA_FINAL', 'CH_TOTAL']])
+        aux = np.sum(temp['MEDIA_FINAL']*temp['CH_TOTAL'])
+        ch_total = np.sum(temp['CH_TOTAL']) * 100
+        print(aux/ch_total)
+
+def aluno_turmas(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] = []
+		
+		for s in Situation.SITUATIONS:
+			if(s[0] == df["SITUACAO"][i]):
+				situacao = s[1]
+				break
+		ano = (df["ANO"][i])
+		codigo = (df["COD_ATIV_CURRIC"][i])
+		nome = (df["NOME_ATIV_CURRIC"][i])
+		nota = (df["MEDIA_FINAL"][i])
+		semestre = (df["PERIODO"][i])
+		
+		students[matr].append({
+			"ano": ano,
+			"codigo": codigo,
+			"nome": nome,
+			"nota": nota,
+			"semestre": semestre,
+			"situacao": situacao
+		})
+	print(students)
+	#~ lines = (df[["MATR_ALUNO","ANO","COD_ATIV_CURRIC","NOME_ATIV_CURRIC","MEDIA_FINAL","PERIODO","SITUACAO"]])
+	#~ for st in (df.groupby("MATR_ALUNO")):
+		#~ print(st[1]["MATR_ALUNO"])
+		#~ print(st[1]["ANO"])
+		#~ print(st[1]["COD_ATIV_CURRIC"])
+		#~ print(st[1]["NOME_ATIV_CURRIC"])
+		#~ print(st[1]["MEDIA_FINAL"])
+		#~ print(st[1]["PERIODO"])
+		#~ print(st[1]["SITUACAO"])
+		#~ print("")
+	#~ total_student = df['MATR_ALUNO'].drop_duplicates()
+	#~ for st in total_student:
+		#~ students[st] = []
+		#~ hist = df[df["MATR_ALUNO"]==st]
+		#~ for matr in hist:
+			#~ print(hist["ANO"])
+			#~ print(hist[matr]["COD_ATIV_CURRIC"])
+			#~ print(hist[matr]["NOME_ATIV_CURRIC"])
+			#~ print(hist[matr]["MEDIA_FINAL"])
+			#~ print(hist[matr]["PERIODO"])
+			#~ print(hist[matr]["SITUACAO"])
+			#~ print(hist[matr])
+			#~ print("")
diff --git a/script/base/dataframe_base.py b/script/base/dataframe_base.py
index a0a179e40f4a775f0926ee946c9edde56e7bdd34..39c056fd523bf04ff37447381ab190e8c58725ee 100644
--- a/script/base/dataframe_base.py
+++ b/script/base/dataframe_base.py
@@ -2,15 +2,22 @@ import re
 import os
 import sys
 import pandas as pd
-
+import numpy as np
 from glob import glob
 from json import load as json_load
 from utils.situations import *
 
 
+class DataframeHolder:
+    def __init__(self, dataframe):
+        self.students = dataframe.groupby('MATR_ALUNO')
+        self.courses = dataframe.groupby('COD_ATIV_CURRIC')
+        self.admission = dataframe.groupby(['ANO_INGRESSO', 'SEMESTRE_INGRESSO'])
+
+
 def load_dataframes(cwd='.'):
     dataframes = []
-    for path, dirs, files in os.walk(cwd):
+    for path, dirs, files in os.walk(cwd):       
         for f in files:
             file_path = path + '/' + f
             dh = {'name': f, 'dataframe': None}
@@ -23,6 +30,9 @@ def load_dataframes(cwd='.'):
                 dataframes.append(dh)
 
     dataframe = fix_dataframes(dataframes)
+    dh = DataframeHolder(dataframe)
+    #~ dh.students.aggregate(teste)
+#    print(dh.students['MEDIA_FINAL'].aggregate(teste))
     return dataframe
 
 
@@ -84,6 +94,12 @@ def fix_admission(df):
 
 
 def fix_evasion(df):
-    # for evasion in EvasionForm.EVASION_FORM:
-        # df.loc[df.FORMA_EVASAO.str.contains(evasion[1]).fillna(False), 'FORMA_EVASAO'] = evasion[0]
-        pass
+    for evasion in EvasionForm.EVASION_FORM:
+        #~ df.loc[df.FORMA_EVASAO.str.contains(evasion[1]).fillna(1.0), 'FORMA_EVASAO'] = evasion[0]
+        df.loc[df.FORMA_EVASAO == evasion[1], 'FORMA_EVASAO'] = evasion[0]
+        #~ if(evasion[0] == 100):
+            #~ for x in df.FORMA_EVASAO.str.contains(evasion[1]).fillna(False):
+                #~ if(x != 0.0):
+                    #~ print(x)
+    #~ print(df.FORMA_EVASAO.str.contains(evasion[1]).fillna(5))
+    #~ print(df[['MATR_ALUNO','FORMA_EVASAO']])
diff --git a/script/build_cache.py b/script/build_cache.py
index 4ceae5a030c3d99e8092bc9e6e1d45adc6930613..4f358398d27a9e83577f65bcf34b1a9fe680103c 100644
--- a/script/build_cache.py
+++ b/script/build_cache.py
@@ -7,12 +7,14 @@ from datetime import timedelta
 from pathlib import Path
 from utils.utils import build_path
 from analysis.degree_analysis import *
+from analysis.student_analysis import *
 
 try:
     to_unicode = unicode
 except NameError:
     to_unicode = str
 
+
 def build_cache(dataframe):
 #    os.chdir("../src")
     path = "cache"
@@ -20,13 +22,13 @@ def build_cache(dataframe):
     path += "/curso"
     build_path(path)
 
-    generate_degree_data(path, dataframe)
-    generate_student_data(path)
-    generate_student_list(path)
-    generate_admission_data(path)
-    generate_admission_list(path)
-    generate_course_data(path)
-    generate_course_general_data(path)
+#    generate_degree_data(path, dataframe)
+    generate_student_data(path,dataframe)
+#    generate_student_list(path)
+#    generate_admission_data(path)
+#    generate_admission_list(path)
+#    generate_course_data(path)
+#    generate_course_general_data(path)
 
 def generate_degree_data(path, dataframe):
     average_graduation(dataframe)
@@ -34,7 +36,8 @@ def generate_degree_data(path, dataframe):
     general_ira(dataframe)
     pass
 
-def generate_student_data(path):
+def generate_student_data(path,dataframe):
+    aluno_turmas(dataframe)
     pass
 
 def generate_student_list(path):