YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
import gradio as gr import pandas as pd import re
def load_data(file_path): return pd.read_excel(file_path)
def extract_courses(data, start_label, column_index): temp = data[data.iloc[:, column_index] == start_label].index[0] course_index = data[data.iloc[:, column_index] == start_label].index.tolist() if len(course_index) > 0: course_index = [index for index in course_index if index > temp] if course_index: course_index = course_index[-1] else: course_index = len(data) else: course_index = len(data) data_subset = data.iloc[temp + 2: course_index] filtered_data = data_subset[data_subset.iloc[:, 4] != 'F'] return filtered_data.iloc[:, column_index].astype(str).tolist()
def check_courses(student_courses, required_courses): UnGradu_Major = [] for major in required_courses: if not any(str(major) in str(my_courses) for my_courses in student_courses): UnGradu_Major.append(major) return UnGradu_Major
def calculate_major_credits(majors_data): Majors_data = [item for item in majors_data if isinstance(item, str) and ('μ (μ )' in item or 'μ ν' in item)] Majors_numbers = [int(re.search(r'\d+', item).group()) for item in Majors_data if re.search(r'\d+', item)] return sum(Majors_numbers)
def get_value(df, row, col, dtype=int): value = df.iloc[row, col] if pd.isna(value): return 0 if dtype == int else 0.0 return dtype(value)
def check_graduation_areas(data): temp = data[data.iloc[:, 1] == '곡ν/μΌμ /κ΅ν/κ΅μ /κ΅μ§'].index[0] Culture_choice_index = data[data.iloc[:, 1] == '곡ν/μΌμ /κ΅ν/κ΅μ /κ΅μ§'].index.tolist() if len(Culture_choice_index) > 0: Culture_choice_index = [index for index in Culture_choice_index if index > temp] if Culture_choice_index: Culture_choice_index = Culture_choice_index[-1] else: Culture_choice_index = len(data) else: Culture_choice_index = len(data)
data_subset = data.iloc[temp + 2: Culture_choice_index]
filtered_data = data_subset[data_subset.iloc[:, 4] != 'F']
My_Culture_choice = filtered_data.iloc[:, 1].tolist()
if '곡ν/μΌμ /κ΅ν/κ΅μ /κ΅μ§' in My_Culture_choice:
My_Culture_choice.remove('곡ν/μΌμ /κ΅ν/κ΅μ /κ΅μ§')
Culture_choice = {}
for item in My_Culture_choice:
if isinstance(item, str):
if 'μ°½μμν΅μ' in item or 'μν΅λ°μ€λ¦¬μ νλ' in item or 'κΈλ‘컬μλ―Ό' in item or 'μκΈ°κ°λ°κ³Όμ§μνꡬ' in item or 'κ΅μ ' in item:
name, value = item.rsplit(maxsplit=1)
Culture_choice[name.strip()] = int(value)
chang_greater_than_2 = Culture_choice.get('μ°½μμν΅μ', 0) >= 2
sootong_greater_than_2 = Culture_choice.get('μν΅λ°μ€λ¦¬μ νλ', 0) >= 2
glo_greater_than_2 = Culture_choice.get('κΈλ‘컬μλ―Ό', 0) >= 2
jagi_greater_than_2 = Culture_choice.get('μκΈ°κ°λ°κ³Όμ§μνꡬ', 0) >= 2
Gu_greater_than_19 = Culture_choice.get('κ΅μ ', 0) >= 19
return {
'μ°½μμ ν΅μ': chang_greater_than_2,
'μν΅ λ° μ€λ¦¬μ νλ': sootong_greater_than_2,
'κΈλ‘컬 μλ―Ό': glo_greater_than_2,
'μκΈ°κ°λ°κ³Ό μ§μ νꡬ': jagi_greater_than_2,
'κ΅μμ ν': Gu_greater_than_19
}
def process_excel(file): data = load_data(file.name)
# μ 곡 κ³Όλͺ© μΆμΆ
My_Majors = extract_courses(data, 'μ ν/μ 곡(μ΄μν/μ νμ΄μ)', 6)
Majors = ['μ² νκ³Ό μ ν', 'ν¬λΌμ΄β
', 'νλΈλ¦¬μ΄β
', 'μ 곡νμκ³Ό μ§λ‘μ€κ³β
']
UnGradu_Major = check_courses(My_Majors, Majors)
# μ 곡 νμ κ³μ°
total_major_credits = calculate_major_credits(My_Majors)
# κ΅μ κ³Όλͺ© μΆμΆ
My_Culture = extract_courses(data, '곡ν/μΌμ /κ΅ν/κ΅μ /κ΅μ§', 1)
Culture = ['ꡬμ½μμΈκ³μμΈμ±', 'μ μ½μμΈκ³μμ¬κΉ', 'μ°½μμλΉνμ μ¬κ³ ', 'κ°νμ£Όμμ μμ€λ¦¬', 'ν λ‘ Β·λ°νμκΈμ°κΈ°', 'κΈμ°κΈ°β
', 'Global Englishβ
', 'Global Englishβ
‘', 'NCSμ§μ
κΈ°μ΄λ₯λ ₯']
UnGradu_Culture = check_courses(My_Culture, Culture)
# 'ν λ‘ Β·λ°νμκΈμ°κΈ°'μ 'κΈμ°κΈ°β
' 쑰건 μ²λ¦¬
if 'ν λ‘ Β·λ°νμκΈμ°κΈ°' not in UnGradu_Culture:
if 'κΈμ°κΈ°β
' in UnGradu_Culture:
UnGradu_Culture.remove('κΈμ°κΈ°β
')
elif 'κΈμ°κΈ°β
' not in UnGradu_Culture:
if 'ν λ‘ Β·λ°νμκΈμ°κΈ°' in UnGradu_Culture:
UnGradu_Culture.remove('ν λ‘ Β·λ°νμκΈμ°κΈ°')
# κ³΅ν΅ μμ κ³Όλͺ© μΆμΆ
My_Gongtong = extract_courses(data, '곡ν/μΌμ /κ΅ν/κ΅μ /κ΅μ§', 1)
Gongtong = ['μ€μ²I', 'μ€μ²β
‘', 'μ€μ²β
’', 'μ€μ²β
£', 'μ€μ²β
€', 'μ€μ²β
₯', 'μ€μ²β
¦', 'μ€μ²β
§', 'κΈ°λ
κ΅μΈμ±κ³Ό μ¬κΉμ리λI', 'κΈ°λ
κ΅μΈμ±κ³Ό μ¬κΉμ리λβ
‘']
UnGradu_Gongtong = check_courses(My_Gongtong, Gongtong)
# μ°½μμ ν΅μ, μν΅ λ° μ€λ¦¬μ νλ, κΈλ‘컬 μλ―Ό, μκΈ°κ°λ°κ³Ό μ§μ νꡬ μμ νμ 체ν¬
graduation_areas_check = check_graduation_areas(data)
# κΈ°λ³Έ μμ 체ν¬
total_credits = get_value(data, 3, 5)
total_credits_check = total_credits >= 130
total_credits_diff = 130 - total_credits
gpa = get_value(data, 3, 9, dtype=float)
gpa_check = gpa >= 2.0
# κ²°κ³Ό μΆλ ₯
result = ""
result += "----- κΈ°λ³Έ μμμ λ§μ‘±νμλμ§ νμΈν©λλ€. -----\n"
if total_credits_check:
result += "μΆνν©λλ€. μ΄ νμ μ΄ 130νμ μ΄μμ
λλ€.\n"
else:
result += f"μμ½μ΅λλ€. μ΄ νμ μ 130νμ μ΄μ μ±μ°μ§ λͺ»νμμ΅λλ€. {total_credits_diff} νμ μ΄μμ λ μ±μ°μ
μΌ ν©λλ€.\n"
if gpa_check:
result += "μΆνν©λλ€. μ΄ νμ μ΄ 2.0 μ΄μμ
λλ€.\n"
else:
result += "μμ½μ΅λλ€. μ΄ νμ μ΄ 2.0 μ΄μμ΄ μλλλ€.\n"
result += "\n----- μ 1μ 곡 μμμ λ§μ‘±νμλμ§ νμΈν©λλ€. -----\n"
result += f"λ£μ§ μμ μ 곡 νμ κ³Όλͺ© : {UnGradu_Major}\n"
if not UnGradu_Major:
result += "μΆνν©λλ€. μ 곡νμ κ³Όλͺ©μ λͺ¨λ μ΄μνμ
¨μ΅λλ€.\n"
else:
result += "μμ½μ΅λλ€. μ νλͺ©μ μ 곡νμ κ³Όλͺ©μ λ μ΄μνμ
μΌ ν©λλ€.\n"
if total_major_credits >= 36:
result += "μΆνν©λλ€. μ 곡 νμ μ΄ 36 μ΄μμ
λλ€.\n"
else:
result += f"μμ½μ΅λλ€. μ 곡 νμ μ 36νμ μ΄μ μ±μ°μ§ λͺ»νμμ΅λλ€. {36 - total_major_credits} νμ μ΄μμ λ μ±μ°μ
μΌ ν©λλ€.\n"
result += "\n----- κ΅μ μμμ λ§μ‘±νμλμ§ νμΈν©λλ€. -----\n"
result += f"λ£μ§ μμ κ΅μνμ κ³Όλͺ© : {UnGradu_Culture}\n"
if not UnGradu_Culture:
result += "μΆνν©λλ€. κ΅μνμ κ³Όλͺ©μ λͺ¨λ μ΄μνμ
¨μ΅λλ€.\n"
else:
result += "μμ½μ΅λλ€. μ νλͺ©μ κ΅μνμ κ³Όλͺ©μ λ μ΄μνμ
μΌ ν©λλ€.\n"
for area, satisfied in graduation_areas_check.items():
if area == 'κ΅μμ ν':
result += f"{area} μμ(19νμ μ΄μ)μ λ§μ‘±νμλκ°? {satisfied}\n"
else:
result += f"{area} μμ(2νμ μ΄μ)μ λ§μ‘±νμλκ°? {satisfied}\n"
result += "\n----- κ³΅ν΅ μμμ λ§μ‘±νμλμ§ νμΈν©λλ€. -----\n"
result += f"μ±μμΌ νλ κ³΅ν΅ μμ: {UnGradu_Gongtong}\n"
if not UnGradu_Gongtong:
result += "μΆνν©λλ€. κ³΅ν΅ μμ κ³Όλͺ©μ λͺ¨λ μ΄μνμ
¨μ΅λλ€.\n"
else:
result += "μμ½μ΅λλ€. μ νλͺ©μ κ³΅ν΅ μμ κ³Όλͺ©μ λ μ΄μνμ
μΌ ν©λλ€.\n"
return result
Gradio μΈν°νμ΄μ€ μ μ
footer = """
μ΄μ λνκ΅ μ‘Έμ νμΈ μμ€ν λ μ΄μ λνκ΅ κΈ°λ κ΅μ΅ν©μ½ν μΈ μμ μ μ‘Έμ μ°κ΅¬ μκ°μμΈ κΉμ°μμ΄ μ§λκ΅μμΈ κΉμ±ν κ΅μμ ν¨κ» λ§λ€κ³ μμ΅λλ€.
μ΄ μμ€ν μ μ°κ΅¬μ©μΌλ‘ μ€λ₯κ° μμ μ μμΌλ―λ‘ κ°μΈμ΄ μ§μ λ€μ νλ²λ νμΈν΄λ³΄μ μΌ ν©λλ€.
μΈν°νμ΄μ€μ μ€λͺ μΆκ°
iface = gr.Blocks()
with iface: gr.Markdown("
μ΄μ λ μ νκ³Ό μ‘Έμ μ건 νμΈ(17~20νλ²)
iface.launch(share=True)