diff --git a/script/analysis/degree_analysis.py b/script/analysis/degree_analysis.py
index 3016a9e6153df0a1581ede60479edf1b515bdac8..4beb300f86d455b215e01dc3c3bf4e8a7c9ee8cd 100644
--- a/script/analysis/degree_analysis.py
+++ b/script/analysis/degree_analysis.py
@@ -40,3 +40,25 @@ def total_evasion_rate(df):
     total_evasion = df.loc[(df['FORMA_EVASAO']!=('Sem evasão')) & (df['FORMA_EVASAO']!=('Formatura')) & (df['FORMA_EVASAO']!=('Reintegração'))].shape[0]
 
     return total_evasion / total_student
+
+def average_graduation_time(df):
+    graduates = df.loc[(df.FORMA_EVASAO == ('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])
+            try: 
+                semester_end = int(row['PERIODO_EVASAO'][5])
+            except ValueError:
+                semester_end = 2
+        year = int(row['PERIODO_INGRESSO'][:4])
+        semester = int(row['PERIODO_INGRESSO'][5])
+        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