Spaces:
Sleeping
Sleeping
File size: 10,776 Bytes
ae745bf 5fdb80c ae745bf 5fdb80c ae745bf 164ace4 ae745bf 5fdb80c ae745bf 8a1f7ab 99cc5d4 8a1f7ab 32194d1 99cc5d4 8a1f7ab 2e18d59 99cc5d4 235d58f ae745bf 30fc8e3 ae745bf 30fc8e3 9ab8d38 30fc8e3 ae745bf e3c6dbc 8a1f7ab ae745bf e3c6dbc ae745bf a3940e8 ae745bf d5e228f c8a19df 788d0b9 ae745bf dcbfd6c ae745bf 817cb35 ae745bf d96b35d ae745bf 5fdb80c ae745bf 5fdb80c ae745bf 817cb35 ae745bf 817cb35 ae745bf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 |
import gradio as gr
import pandas as pd
import matplotlib.pyplot as plt
ihtiyac_df = pd.read_excel("ihtiyac_data.xlsx")
fazla_df = pd.read_excel("norm_fazlasi.xlsx")
# Branşlar listesi
branşlar = fazla_df['Branşı'].unique().tolist()
# Fazla öğretmen sayısını hesaplama
fazla_ogretmen = fazla_df.groupby('Branşı').size().reset_index(name='fazla_sayisi')
# Branşa göre ihtiyaçların toplamını hesaplama
branş_ihtiyac_df = ihtiyac_df.groupby('branş', as_index=False)['ihtiyac'].sum()
# Fazla öğretmen ve ihtiyaç verisini birleştirme
merged_df = pd.merge(branş_ihtiyac_df, fazla_ogretmen, left_on='branş', right_on='Branşı', how='left')
merged_df['fazla_sayisi'] = merged_df['fazla_sayisi'].fillna(0)
merged_df['kalan_ihtiyac'] = merged_df['ihtiyac'] - merged_df['fazla_sayisi']
merged_df['kalan_ihtiyac'] = merged_df['kalan_ihtiyac'].apply(lambda x: max(x, 0))
merged_df['ucretli_ihtiyaci'] = merged_df['kalan_ihtiyac']
# Hizmet bölgelerine göre toplam ihtiyaç hesaplama
hizmet_bolgesi_ihtiyac_df = ihtiyac_df.groupby('hizmet_bolgesi', as_index=False)['ihtiyac'].sum()
# Fazla öğretmen verisini hizmet bölgesine göre gruplayarak hesapla
fazla_bolgesi_df = fazla_df.groupby('HizmetPuanı').size().reset_index(name='fazla_sayisi')
# Verileri birleştir
merged_bolge_df = pd.merge(hizmet_bolgesi_ihtiyac_df, fazla_bolgesi_df, left_on='hizmet_bolgesi', right_on='HizmetPuanı', how='left')
# Fazla öğretmen olmayan bölgeler için 0 atama
merged_bolge_df['fazla_sayisi'] = merged_bolge_df['fazla_sayisi'].fillna(0)
# Kalan ihtiyaçları hesaplama
merged_bolge_df['kalan_ihtiyac'] = merged_bolge_df['ihtiyac'] - merged_bolge_df['fazla_sayisi']
merged_bolge_df['kalan_ihtiyac'] = merged_bolge_df['kalan_ihtiyac'].apply(lambda x: max(x, 0))
# Hizmet bölgesine göre kalan ihtiyaçları sırala
merged_bolge_df_sorted = merged_bolge_df.sort_values(by='kalan_ihtiyac', ascending=True)
def hizmet_bolgesine_gore_eksik_ogretmen(branş):
# Seçilen branşın verilerini filtrele
branş_ihtiyac_df = ihtiyac_df[ihtiyac_df['branş'] == branş]
# Her bir hizmet bölgesinde ihtiyaçları grupla
hizmet_bolgesi_ihtiyac_df = branş_ihtiyac_df.groupby('hizmet_bolgesi', as_index=False)['ihtiyac'].sum()
# Grafik oluşturma
fig, ax = plt.subplots(figsize=(10, 6))
hizmet_bolgesi_ihtiyac_df.plot(kind='bar', x='hizmet_bolgesi', y='ihtiyac', ax=ax, color='green')
ax.set_title(f"{branş} Branşı İçin Hizmet Bölgelerinde İhtiyaç Dağılımı")
ax.set_ylabel("İhtiyaç Sayısı")
ax.set_xlabel("Hizmet Bölgesi")
plt.tight_layout()
# Grafik döndürme
return hizmet_bolgesi_ihtiyac_df[['hizmet_bolgesi', 'ihtiyac']], fig
# Ücretli öğretmen hesaplama fonksiyonu
def ucretli_ogretmenler(branş):
# Seçilen branşın verilerini çekme
branş_veri = merged_df[merged_df['branş'] == branş]
if branş_veri.empty:
return "Bu branş için veri bulunamadı.", None
ihtiyac = int(branş_veri['ihtiyac'].values[0])
fazla_sayisi = int(branş_veri['fazla_sayisi'].values[0])
ucretli_ihtiyaci = int(branş_veri['ucretli_ihtiyaci'].values[0])
# Grafik oluşturma
fig, ax = plt.subplots()
ax.bar(['İhtiyaç', 'Fazla Sayısı', 'Ücretli İhtiyacı'], [ihtiyac, fazla_sayisi, ucretli_ihtiyaci], color=['blue', 'orange', 'green'])
ax.set_title(f"{branş} Branşı Analizi")
ax.set_ylabel("Sayı")
ax.set_xlabel("Kategoriler")
plt.tight_layout()
return (f"Seçilen Branş: {branş}\n\n"
f"İhtiyaç: {ihtiyac}\n"
f"Fazla Sayısı: {fazla_sayisi}\n"
f"Ücretli İhtiyacı: {ucretli_ihtiyaci}"), fig
def clear():
return '', None
def en_fazla_hizmet_puani_ogretmeni_bul():
# Hizmet puanlarına göre en yüksek olanı bul
max_hizmet_puani = fazla_df['HizmetPuanı'].max()
# En yüksek hizmet puanına sahip öğretmen ve branşını bul
en_yuksek_puan_ogretmen = fazla_df[fazla_df['HizmetPuanı'] == max_hizmet_puani]
# Sonuçları döndür
if not en_yuksek_puan_ogretmen.empty:
return f"En fazla hizmet puanına sahip öğretmen: {en_yuksek_puan_ogretmen['Adı'].values[0]}\nBranşı: {en_yuksek_puan_ogretmen['Branşı'].values[0]}\nHizmet Puanı: {max_hizmet_puani}"
else:
return "Veri bulunamadı."
# Hizmet puanına göre sıralama
def hizmet_puanina_gore_sirala(branş):
branş_df = fazla_df[fazla_df['Branşı'] == branş]
# Hizmet puanına göre sıralama
branş_df_sorted = branş_df.sort_values(by='HizmetPuanı', ascending=False)
# Sonuçları döndür
return branş_df_sorted[['Adı', 'HizmetPuanı']]
def kac_okul_var():
egitim_seviyeleri = ['anaokulu', 'ilkokul', 'ortaokul', 'lise']
# Eğitim seviyelerine göre kurumları sayma
kurum_sayisi = {}
for egitim_seviyesi in egitim_seviyeleri:
# Eğitim seviyesine göre filtreleme
filtrelenmis_kurumlar = ihtiyac_df[ihtiyac_df['okul'].str.contains(egitim_seviyesi, case=False, na=False)]
kurum_sayisi[egitim_seviyesi] = filtrelenmis_kurumlar.shape[0]
# Pasta grafiği için verileri hazırlama
labels = list(kurum_sayisi.keys())
sizes = list(kurum_sayisi.values())
# Grafik başlığı
fig, ax = plt.subplots(figsize=(7,7))
ax.set_title('Eğitim Seviyelerine Göre Kurum Dağılımı')
# Pasta grafiği oluşturma
ax.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90, colors=['#ff9999','#66b3ff','#99ff99','#ffcc99'])
ax.axis('equal') # Dairesel
# Sonuçları formatlı bir şekilde döndürme
sonuc = "Eğitim Seviyelerine Göre Kurum Sayıları:\n"
for egitim_seviyesi, sayi in kurum_sayisi.items():
sonuc += f"{egitim_seviyesi.capitalize()}: {sayi} kurum\n"
return sonuc, fig
def birinci_hizmet_bolgesi_okullari(branş):
# Hizmet bölgesi 4 olan ve belirtilen branşa uyan okulları filtrele
birinci_hizmet_bolgesi_okullari = ihtiyac_df[
(ihtiyac_df['hizmet_bolgesi'] == 1) & (ihtiyac_df['branş'] == branş)
]['okul']
# DataFrame'e dönüştür
birinci_hizmet_bolgesi_df = pd.DataFrame(birinci_hizmet_bolgesi_okullari, columns=['okul'])
# Sonucu döndür
return dorduncu_hizmet_bolgesi_df
def ikinci_hizmet_bolgesi_okullari():
# 1. hizmet bölgesine ait okulları filtreleyip, sadece okul isimlerini almak
ikinci_hizmet_bolgesi_okullari = ihtiyac_df[ihtiyac_df['hizmet_bolgesi'] == 2]['okul']
ikinci_hizmet_bolgesi_df = pd.DataFrame(ikinci_hizmet_bolgesi_okullari)
return ikinci_hizmet_bolgesi_df
def ucuncu_hizmet_bolgesi_okullari():
# 1. hizmet bölgesine ait okulları filtreleyip, sadece okul isimlerini almak
ucuncu_hizmet_bolgesi_okullari = ihtiyac_df[ihtiyac_df['hizmet_bolgesi'] == 3]['okul']
ucuncu_hizmet_bolgesi_df = pd.DataFrame(ucuncu_hizmet_bolgesi_okullari)
# Tüm satır ve sütunların görünmesini sağlama
pd.set_option('display.max_rows', None) # Tüm satırları göster
pd.set_option('display.max_columns', None) # Tüm sütunları göster
return ucuncu_hizmet_bolgesi_df
def dorduncu_hizmet_bolgesi_okullari(branş):
# Hizmet bölgesi 4 olan ve belirtilen branşa uyan okulları filtrele
dorduncu_hizmet_bolgesi_okullari = ihtiyac_df[
(ihtiyac_df['hizmet_bolgesi'] == 4) & (ihtiyac_df['branş'] == branş)
]['okul']
# DataFrame'e dönüştür
dorduncu_hizmet_bolgesi_df = pd.DataFrame(dorduncu_hizmet_bolgesi_okullari, columns=['okul'])
# Sonucu döndür
return dorduncu_hizmet_bolgesi_df
# Gradio arayüzü
def gradio_ui():
with gr.Blocks() as demo:
gr.Markdown("# Öğretmen Analiz ")
gr.Markdown("Bir işlem seçin ")
# Branş Seçimi
branş_seçimi = gr.Dropdown(choices=branşlar, label="Branş Seçin")
# Butonlar
with gr.Row():
ucretli_button = gr.Button("Branş Bazında Ücretli Öğretmen İhtiyaç Analizi", elem_id="ucretli_button")
hizmet_puani_button = gr.Button("Branş Bazında Hizmet Puanına Göre Sıralama", elem_id="hizmet_puani_button")
hizmet_bolgesi_button = gr.Button("Hizmet Bölgesine Göre Öğretmen İhtiyaç Analizi", elem_id="hizmet_bolgesi_button")
with gr.Row():
en_fazla_hizmet_puani_button = gr.Button("En Fazla Hizmet Puanına Sahip Öğretmeni Bul", elem_id="en_fazla_hizmet_puani_button")
with gr.Row():
kac_okul_button = gr.Button("Tüm Eğitim Kademelerinde Kaç Okul Var?", elem_id="kac_okul_button")
with gr.Row():
birinci_hizmet_bolgesi_button=gr.Button("1.Hizmet Bölgesinde İhtiyaç Olan Okullar",elem_id="birinci_hizmet_bolgesi_button")
ikinci_hizmet_bolgesi_button=gr.Button("2.Hizmet Bölgesinde İhtiyaç Olan Okullar",elem_id="ikinci_hizmet_bolgesi_button")
ucuncu_hizmet_bolgesi_button=gr.Button("3.Hizmet Bölgesinde İhtiyaç Olan Okullar",elem_id="ucuncu_hizmet_bolgesi_button")
dorduncu_hizmet_bolgesi_button=gr.Button("4.Hizmet Bölgesinde İhtiyaç Olan Okullar",elem_id="dorduncu_hizmet_bolgesi_button")
with gr.Row():
clear_button = gr.Button("Temizle", elem_id="clear_button")
# Sonuçları göstermek
sonuç_text = gr.Textbox(label="Sonuçlar")
grafik = gr.Plot(label=" Grafik")
# İşlem butonları
ucretli_button.click(ucretli_ogretmenler, inputs=[branş_seçimi], outputs=[sonuç_text, grafik])
hizmet_puani_button.click(hizmet_puanina_gore_sirala, inputs=[branş_seçimi], outputs=sonuç_text)
hizmet_bolgesi_button.click(hizmet_bolgesine_gore_eksik_ogretmen, inputs=[branş_seçimi], outputs=[sonuç_text, grafik])
en_fazla_hizmet_puani_button.click(en_fazla_hizmet_puani_ogretmeni_bul, inputs=[], outputs=sonuç_text)
kac_okul_button.click(kac_okul_var,inputs=[],outputs=[sonuç_text,grafik])
birinci_hizmet_bolgesi_button.click(birinci_hizmet_bolgesi_okullari,inputs=[],outputs=[sonuç_text])
ikinci_hizmet_bolgesi_button.click(ikinci_hizmet_bolgesi_okullari,inputs=[],outputs=[sonuç_text])
ucuncu_hizmet_bolgesi_button.click(ucuncu_hizmet_bolgesi_okullari,inputs=[],outputs=[sonuç_text])
dorduncu_hizmet_bolgesi_button.click(dorduncu_hizmet_bolgesi_okullari,inputs=[],outputs=[sonuç_text])
clear_button.click(clear, inputs=[], outputs=[sonuç_text, grafik])
return demo
demo = gradio_ui()
demo.launch(share=True)
|