diff --git a/script/analysis/degree_analysis.py b/script/analysis/degree_analysis.py
index 4beb300f86d455b215e01dc3c3bf4e8a7c9ee8cd..16d76d2328fcbc43c090488a67769915815d27dc 100644
--- a/script/analysis/degree_analysis.py
+++ b/script/analysis/degree_analysis.py
@@ -36,29 +36,31 @@ def general_ira(df):
     return (fixed.MEDIA_FINAL.mean(), fixed.MEDIA_FINAL.std())
 
 def total_evasion_rate(df):
-    total_student = df['MATR_ALUNO'].shape[0]
-    total_evasion = df.loc[(df['FORMA_EVASAO']!=('Sem evasão')) & (df['FORMA_EVASAO']!=('Formatura')) & (df['FORMA_EVASAO']!=('Reintegração'))].shape[0]
+    students = df['MATR_ALUNO'].drop_duplicates()
+    total_student = students.shape[0]
+    total_evasion = students.loc[(df.FORMA_EVASAO != EvasionForm.EF_ATIVO) & (df.FORMA_EVASAO != EvasionForm.EF_FORMATURA) & (df.FORMA_EVASAO != EvasionForm.EF_REINTEGRACAO)].shape[0]
+    #voltando um aluno com evasao a mais do que deveria, devido a mudanca na tabela tem um ATIVO a menos
 
     return total_evasion / total_student
 
 def average_graduation_time(df):
-    graduates = df.loc[(df.FORMA_EVASAO == ('Formatura'))]
+    graduates = df.loc[(df.FORMA_EVASAO == EvasionForm.EF_FORMATURA)]
     total_graduate = graduates.shape[0]
     average_time = 0
     for index, row in graduates.iterrows():
         year_end = 2016
         semester_end = 2
-        if pd.notnull(row['PERIODO_EVASAO']):
-            year_end = int(row['PERIODO_EVASAO'][:4])
+        if pd.notnull(row['ANO_EVASAO']):
+            year_end = int(row['ANO_EVASAO'])
             try: 
-                semester_end = int(row['PERIODO_EVASAO'][5])
+                semester_end = int(row['SEMESTRE_EVASAO'])
             except ValueError:
                 semester_end = 2
-        year = int(row['PERIODO_INGRESSO'][:4])
-        semester = int(row['PERIODO_INGRESSO'][5])
+        year = int(row['ANO_INGRESSO'])
+        semester = int(row['SEMESTRE_INGRESSO'])
         difference = 2 * (year_end - year) + (semester_end - semester) + 1
         average_time += difference
     average_time /= total_graduate
     average_time /= 2
-    
+
     return average_time
\ No newline at end of file
diff --git a/script/build_cache.py b/script/build_cache.py
index 57615e18d340f4cc35523c26b1f2fd4835f7edf8..ec66bab1b2c156e333e8588d1e35a0249c8cc65d 100644
--- a/script/build_cache.py
+++ b/script/build_cache.py
@@ -23,7 +23,7 @@ def build_cache(dataframe):
     build_path(path)
 
     generate_student_data(path, dataframe)
-#    generate_degree_data(path, dataframe)
+    generate_degree_data(path, dataframe)
     generate_student_data(path,dataframe)
 #    generate_student_list(path)
 #    generate_admission_data(path)
@@ -32,9 +32,11 @@ def build_cache(dataframe):
 #    generate_course_general_data(path)
 
 def generate_degree_data(path, dataframe):
-    de_an.average_graduation(dataframe)
-    de_an.general_failure(dataframe)
-    de_an.general_ira(dataframe)
+    average_graduation(dataframe)
+    general_failure(dataframe)
+    general_ira(dataframe)
+    total_evasion_rate(dataframe)
+    average_graduation_time(dataframe)
     pass
 
 def generate_student_data(path,dataframe):
diff --git a/script/main.py b/script/main.py
index 979bc78769847a0948ea1ca4accf6fbe6b43ea6a..8e3f306ac70d8eacb870f61e43898d09700f435e 100644
--- a/script/main.py
+++ b/script/main.py
@@ -3,13 +3,13 @@ import time
 from base.dataframe_base import load_dataframes
 from build_cache import build_cache
 from datetime import timedelta
+from analysis.degree_analysis import *
 
 def main():
     start_time = time.clock()
     start_time_exec = time.time()
 
     dataframe = load_dataframes(os.getcwd() + '/' + 'base')
-
     build_cache(dataframe)
 
     cpu_time = timedelta(seconds=round(time.clock() - start_time))