import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# تنظیمات اولیه استریم لیت
st.set_page_config(page_title="مرکز آموزش", page_icon="🎓", layout="wide")

st.title("📊 مرکز آموزش")
st.write("""
این برنامه به شما کمک می‌کند تا داده‌های ثبت‌نام هنرجو و کلاس‌های آموزش را تجزیه و تحلیل کرده و داشبوردی برای نمایش آن‌ها ارائه دهید.
لطفا فایل CSV داده‌های خود را آپلود کنید.
""")

# آپلود فایل CSV
uploaded_file = st.file_uploader("انتخاب فایل CSV", type=["csv"])

if uploaded_file:
    # خواندن داده‌های CSV
    df = pd.read_csv(uploaded_file, delimiter='؛')

    # تغییر نام ستون‌ها به نام‌های معنی‌دار
    df.rename(columns={
        'Table1_Cell1': 'تاریخ کلاس',
        'Table1_Cell2': 'شهریه',
        'Table1_Cell3': 'تعداد جلسات',
        'Table1_Cell4': 'استاد',
        'Table1_Cell5': 'نام کلاس',
        'Table1_Cell6': 'تحصیلات',
        'Table1_Cell7': 'جنسیت',
        'Table1_Cell8': 'کد ملی',
        'Table1_Cell9': 'نام پدر',
        'Table1_Cell10': 'نام خانوادگی',
        'Table1_Cell11': 'نام هنرجو'
    }, inplace=True)

    # پاکسازی نام ستون‌ها از فضاهای اضافی
    df.columns = df.columns.str.strip()

    # نمایش داده‌ها
    st.subheader("نمایش داده‌ها")
    st.write("پیش‌نمایش داده‌های آپلود شده:")
    st.dataframe(df.head())

    st.write("نام ستون‌های موجود در فایل:")
    st.write(df.columns)

    # نمودار تعداد هنرجویان بر اساس نام کلاس
    st.subheader("تعداد هنرجویان بر اساس کلاس")
    student_count_per_class = df.groupby('نام کلاس')['نام هنرجو'].count().reset_index()
    plt.figure(figsize=(10, 6))
    sns.barplot(x='نام کلاس', y='نام هنرجو', data=student_count_per_class)
    plt.xticks(rotation=45)
    plt.title('تعداد هنرجویان بر اساس کلاس')
    plt.xlabel('نام کلاس')
    plt.ylabel('تعداد هنرجویان')
    st.pyplot(plt)

    # نمودار توزیع جنسیت
    st.subheader("توزیع جنسیت")
    gender_distribution = df['جنسیت'].value_counts().reset_index()
    gender_distribution.columns = ['جنسیت', 'تعداد']
    plt.figure(figsize=(8, 5))
    sns.barplot(x='جنسیت', y='تعداد', data=gender_distribution)
    plt.title('توزیع جنسیت')
    st.pyplot(plt)

    # نمودار شهریه بر اساس تعداد جلسات
    st.subheader("نمودار شهریه بر اساس تعداد جلسات")
    plt.figure(figsize=(10, 6))
    sns.scatterplot(data=df, x='تعداد جلسات', y='شهریه')
    plt.title('توزیع شهریه بر اساس تعداد جلسات')
    plt.xlabel('تعداد جلسات')
    plt.ylabel('شهریه')
    st.pyplot(plt)

else:
    st.info("لطفا یک فایل CSV برای ادامه آپلود کنید.")