mel-nur commited on
Commit
03b3622
·
verified ·
1 Parent(s): 1324314

Upload 4 files

Browse files
Files changed (4) hide show
  1. app.py +364 -0
  2. ihtiyac_data.xlsx +0 -0
  3. norm_fazlasi.xlsx +0 -0
  4. requirements.txt +5 -0
app.py ADDED
@@ -0,0 +1,364 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import pandas as pd
3
+ import matplotlib.pyplot as plt
4
+ import os
5
+ import folium
6
+
7
+ # Veri setlerini yükleme
8
+ df_norm = pd.read_excel('norm_fazlasi.xlsx')
9
+ df_ihtiyac = pd.read_excel('ihtiyac_data.xlsx')
10
+
11
+ # İlçe koordinatları
12
+ ilce_kordinatlar = [
13
+ {"ilçe": 'SERİK', "enlem": 36.921822, "boylam": 31.101271},
14
+ {"ilçe": 'MURATPAŞA', "enlem": 36.882271, "boylam": 30.76759},
15
+ {"ilçe": 'MANAVGAT', "enlem": 36.783333, "boylam": 31.433332},
16
+ {"ilçe": 'KUMLUCA', "enlem": 36.609336, "boylam": 30.548309},
17
+ {"ilçe": 'KONYAALTI', "enlem": 36.87889, "boylam": 30.61007},
18
+ {"ilçe": 'KORKUTELİ', "enlem": 37.152289, "boylam": 30.236633},
19
+ {"ilçe": 'KEPEZ', "enlem": 36.912132, "boylam": 30.686714},
20
+ {"ilçe": 'KEMER', "enlem": 36.602792, "boylam": 30.559762},
21
+ {"ilçe": 'KAŞ', "enlem": 36.204441, "boylam": 29.638981},
22
+ {"ilçe": 'FİNİKE', "enlem": 36.311292, "boylam": 30.158957},
23
+ {"ilçe": 'GAZİPAŞA', "enlem": 36.297874, "boylam": 32.278589},
24
+ {"ilçe": 'GÜNDOĞMUŞ', "enlem": 36.814942, "boylam": 31.998952},
25
+ {"ilçe": 'İBRADI', "enlem": 37.096943, "boylam": 31.598356},
26
+ {"ilçe": 'DEMRE', "enlem": 36.244437, "boylam": 29.987471},
27
+ {"ilçe": 'DÖŞEMEALTI', "enlem": 37.023026, "boylam": 30.60121},
28
+ {"ilçe": 'ELMALI', "enlem": 36.737836, "boylam": 29.916657},
29
+ {"ilçe": 'ALANYA', "enlem": 36.610888, "boylam": 31.778913},
30
+ {"ilçe": 'AKSEKİ', "enlem": 37.04705, "boylam": 31.7903},
31
+ {"ilçe": 'AKSU', "enlem": 36.946678, "boylam": 30.839846}
32
+ ]
33
+ ilce_df = pd.DataFrame(ilce_kordinatlar)
34
+
35
+ # İlçe koordinatlarını veri setlerine ekleme
36
+ df_ihtiyac = df_ihtiyac.merge(ilce_df, how='left', on='ilçe')
37
+ df_norm = df_norm.merge(ilce_df.rename(columns={'ilçe': 'İlçe Adı'}), how='left', left_on='İlçe Adı', right_on='İlçe Adı')
38
+
39
+ # Harita oluşturma fonksiyonu
40
+ def create_map(selected_ilce, selected_branş):
41
+ # Filtreleme
42
+ filtered_ihtiyac = df_ihtiyac[(df_ihtiyac['ilçe'] == selected_ilce) & (df_ihtiyac['branş'] == selected_branş)]
43
+ filtered_norm = df_norm[(df_norm['İlçe Adı'] == selected_ilce) & (df_norm['Branşı'] == selected_branş)]
44
+
45
+ # İhtiyaç ve norm fazlası değerlerini hesaplama
46
+ toplam_ihtiyac = filtered_ihtiyac['ihtiyac'].sum() if not filtered_ihtiyac.empty else 0
47
+ mazaretli_norm_fazlası = filtered_norm[filtered_norm['Açıklamalar'].notna()].shape[0]
48
+ mazaretsiz_norm_fazlası = filtered_norm[filtered_norm['Açıklamalar'].isna()].shape[0]
49
+
50
+ # İlçe koordinatlarını alın
51
+ row = ilce_df[ilce_df['ilçe'] == selected_ilce]
52
+ if row.empty:
53
+ return "<p>Seçilen ilçeye ait koordinat bulunamadı.</p>"
54
+
55
+ enlem, boylam = row.iloc[0]['enlem'], row.iloc[0]['boylam']
56
+
57
+ # Harita oluşturma
58
+ map_center = [enlem, boylam]
59
+ my_map = folium.Map(location=map_center, zoom_start=12)
60
+
61
+ # Harita üzerine bilgi ekleme
62
+ folium.Marker(
63
+ location=map_center,
64
+ popup=(f"<b>İlçe:</b> {selected_ilce}<br>"
65
+ f"<b>Branş:</b> {selected_branş}<br>"
66
+ f"<b>Toplam İhtiyaç:</b> {toplam_ihtiyac}<br>"
67
+ f"<b>Mazaretli Norm Fazlası:</b> {mazaretli_norm_fazlası}<br>"
68
+ f"<b>Mazaretsiz Norm Fazlası:</b> {mazaretsiz_norm_fazlası}"),
69
+ tooltip=f"{selected_ilce} - {selected_branş}"
70
+ ).add_to(my_map)
71
+
72
+ # Haritayı HTML formatında döndür
73
+ return my_map._repr_html_()
74
+
75
+
76
+ # Filter the DataFrame based on user input
77
+ def filter_dataframe(ilce_values, brans_values, aciklama_values, include_empty_aciklama):
78
+ df = df_norm.copy()
79
+
80
+ # Apply filters if values are provided
81
+ if ilce_values and "Tüm İlçeler" not in ilce_values:
82
+ df = df[df['İlçe Adı'].isin(ilce_values)]
83
+ if brans_values:
84
+ df = df[df['Branşı'].isin(brans_values)]
85
+ if aciklama_values:
86
+ df = df[df['Açıklamalar'].isin(aciklama_values)]
87
+ if include_empty_aciklama:
88
+ df = pd.concat([df, df[df['Açıklamalar'].isna()]]).drop_duplicates()
89
+
90
+ return df, f"Kayıt Sayısı: {len(df)}"
91
+
92
+ # Calculate needs and norm excess per district
93
+ def calculate_needs_and_norm(ilce_values, brans_values):
94
+ # İlçe ve branş filtreleme işlemi
95
+ df_ihtiyac_filtered = df_ihtiyac.copy()
96
+ df_norm_filtered = df_norm.copy()
97
+
98
+ if ilce_values and "Tüm İlçeler" not in ilce_values:
99
+ df_ihtiyac_filtered = df_ihtiyac_filtered[df_ihtiyac_filtered['ilçe'].isin(ilce_values)]
100
+ if brans_values:
101
+ df_ihtiyac_filtered = df_ihtiyac_filtered[df_ihtiyac_filtered['branş'].isin(brans_values)]
102
+
103
+ # Özet bilgi için toplam ihtiyaç sayısını direkt olarak hesaplama
104
+ total_needs_sum = df_ihtiyac_filtered['ihtiyac'].sum()
105
+
106
+ # Sonuçları toplamak için liste
107
+ results = []
108
+ unique_ilce_values = ilce_values if ilce_values and "Tüm İlçeler" not in ilce_values else df_norm['İlçe Adı'].unique().tolist()
109
+ unique_brans_values = brans_values if brans_values else df_norm['Branşı'].unique().tolist()
110
+
111
+ for ilce in unique_ilce_values:
112
+ df_norm_ilce = df_norm_filtered[df_norm_filtered['İlçe Adı'] == ilce]
113
+
114
+ for brans in unique_brans_values:
115
+ # Her ilçe ve branş için ilgili ihtiyaç miktarını hesapla
116
+ total_needs = df_ihtiyac_filtered[(df_ihtiyac_filtered['ilçe'] == ilce) & (df_ihtiyac_filtered['branş'] == brans)]['ihtiyac'].sum()
117
+ mazaretli_count = df_norm_ilce[(df_norm_ilce['Branşı'] == brans) & (df_norm_ilce['Açıklamalar'].notna())].shape[0]
118
+ mazaretsiz_count = df_norm_ilce[(df_norm_ilce['Branşı'] == brans) & (df_norm_ilce['Açıklamalar'].isna())].shape[0]
119
+
120
+ results.append({
121
+ 'İlçe': ilce,
122
+ 'Branş': brans,
123
+ 'Toplam İhtiyaç': total_needs, # Her ilçe ve branşa özgü toplam ihtiyaç
124
+ 'Norm Fazlası (Mazaretli)': mazaretli_count,
125
+ 'Norm Fazlası (Mazaretsiz)': mazaretsiz_count
126
+ })
127
+
128
+ result_df = pd.DataFrame(results)
129
+ total_mazaretli_sum = result_df['Norm Fazlası (Mazaretli)'].sum()
130
+ total_mazaretsiz_sum = result_df['Norm Fazlası (Mazaretsiz)'].sum()
131
+
132
+ summary_text = (f"Toplam İhtiyaç: {total_needs_sum} | "
133
+ f"Toplam Norm Fazlası (Mazaretli): {total_mazaretli_sum} | "
134
+ f"Toplam Norm Fazlası (Mazaretsiz): {total_mazaretsiz_sum}")
135
+
136
+ return result_df, summary_text
137
+
138
+
139
+ # Function to plot the results as a bar chart
140
+ def plot_results(df):
141
+ plt.figure(figsize=(14, 8)) # Grafik boyutunu artırıyoruz
142
+ df.groupby('İlçe')[['Toplam İhtiyaç', 'Norm Fazlası (Mazaretli)', 'Norm Fazlası (Mazaretsiz)']].sum().plot(kind='bar')
143
+ plt.title("İhtiyaç ve Norm Fazlası Dağılımı")
144
+ plt.xlabel("İlçe")
145
+ plt.ylabel("Sayı")
146
+ plt.xticks(rotation=45, ha="right") # Etiketleri biraz sağa yatırıyoruz
147
+ plt.tight_layout()
148
+ chart_path = 'bar_chart.png'
149
+ plt.savefig(chart_path)
150
+ return chart_path # Dosya yolunu döndür
151
+
152
+ # Function to filter "ihtiyac" data based on selected ilce and brans
153
+ def filter_ihtiyac_data(ilce_values, brans_values, include_empty_aciklama=False):
154
+ df_filtered = df_ihtiyac.copy()
155
+
156
+ if ilce_values and "Tüm İlçeler" not in ilce_values:
157
+ df_filtered = df_filtered[df_filtered['ilçe'].isin(ilce_values)]
158
+ if brans_values:
159
+ df_filtered = df_filtered[df_filtered['branş'].isin(brans_values)]
160
+
161
+ if include_empty_aciklama:
162
+ df_filtered = pd.concat([df_filtered, df_filtered[df_filtered['Açıklamalar'].isna()]]).drop_duplicates()
163
+
164
+ total_needs_sum = df_filtered['ihtiyac'].sum()
165
+ return df_filtered, f"Toplam İhtiyaç: {total_needs_sum}"
166
+
167
+
168
+
169
+
170
+
171
+ # Define Gradio interface components
172
+ with gr.Blocks() as demo:
173
+ with gr.Tab("Antalya Norm Fazlası Öğretmenler"):
174
+ ilce_choices = sorted(df_norm['İlçe Adı'].dropna().astype(str).unique().tolist())
175
+ ilce_multiselect = gr.Dropdown(choices=["Tüm İlçeler"] + ilce_choices, label="Select İlçe Adı", multiselect=True)
176
+ brans_multiselect = gr.Dropdown(choices=sorted(df_norm['Branşı'].dropna().unique().tolist()), label="Select Branşı", multiselect=True)
177
+ aciklama_choices = sorted(df_norm['Açıklamalar'].dropna().unique().tolist())
178
+ aciklama_multiselect = gr.Dropdown(choices=aciklama_choices, label="Mazaretliler", multiselect=True)
179
+ include_empty_aciklama = gr.Checkbox(label="Mazaretsizleri de ekle")
180
+
181
+ filter_button = gr.Button("Listele")
182
+
183
+ record_count = gr.Textbox(label="Kişi Sayısı", interactive=False)
184
+ output = gr.DataFrame()
185
+ filter_button.click(fn=filter_dataframe, inputs=[ilce_multiselect, brans_multiselect, aciklama_multiselect, include_empty_aciklama], outputs=[output, record_count])
186
+
187
+ with gr.Tab("İhtiyaç ve Norm Fazlası Analizi"):
188
+ ilce_choices_ihtiyac = sorted(df_ihtiyac['ilçe'].dropna().astype(str).unique().tolist())
189
+ ilce_multiselect_ihtiyac = gr.Dropdown(choices=["Tüm İlçeler"] + ilce_choices_ihtiyac, label="Select İlçe Adı", multiselect=True)
190
+ brans_multiselect_ihtiyac = gr.Dropdown(choices=sorted(df_ihtiyac['branş'].dropna().unique().tolist()), label="Select Branşı", multiselect=True)
191
+
192
+ analyze_button = gr.Button("Analiz Et")
193
+ analysis_chart = gr.Image()
194
+ analysis_record_count = gr.Textbox(label="Özet Bilgi", interactive=False)
195
+ analysis_output = gr.DataFrame()
196
+
197
+ def analyze_and_plot(ilce_values, brans_values):
198
+ result_df, summary_text = calculate_needs_and_norm(ilce_values, brans_values)
199
+ chart_path = plot_results(result_df)
200
+ return result_df, summary_text, chart_path
201
+
202
+ analyze_button.click(fn=analyze_and_plot, inputs=[ilce_multiselect_ihtiyac, brans_multiselect_ihtiyac], outputs=[analysis_output, analysis_record_count, analysis_chart])
203
+
204
+ with gr.Tab("İhtiyaç Verisi Filtreleme"):
205
+ ilce_multiselect_ihtiyac_filter = gr.Dropdown(choices=["Tüm İlçeler"] + ilce_choices_ihtiyac, label="İlçe Adı", multiselect=True)
206
+ brans_multiselect_ihtiyac_filter = gr.Dropdown(choices=sorted(df_ihtiyac['branş'].dropna().unique().tolist()), label="Branş", multiselect=True)
207
+
208
+ filter_ihtiyac_button = gr.Button("Filtrele")
209
+
210
+ ihtiyac_total_count = gr.Textbox(label="Toplam İhtiyaç", interactive=False)
211
+ ihtiyac_output = gr.DataFrame()
212
+
213
+ filter_ihtiyac_button.click(fn=filter_ihtiyac_data, inputs=[ilce_multiselect_ihtiyac_filter, brans_multiselect_ihtiyac_filter], outputs=[ihtiyac_output, ihtiyac_total_count])
214
+
215
+ # 4. Tab: Branşları Karşılaştırma
216
+ # 4. Tab: Branşları Karşılaştırma
217
+ with gr.Tab("Branşları Karşılaştırma"):
218
+ # İhtiyaç ve norm fazlası veri çerçevelerinde bulunan tüm benzersiz branşları alıyoruz
219
+ all_branches = sorted(set(df_ihtiyac['branş'].dropna().unique()).union(df_norm['Branşı'].dropna().unique()))
220
+ brans_multiselect_compare = gr.Dropdown(choices=all_branches, label="Karşılaştırılacak Branşları Seçin", multiselect=True)
221
+
222
+ compare_button = gr.Button("Karşılaştır")
223
+ compare_output = gr.DataFrame()
224
+ compare_chart = gr.Image()
225
+
226
+ def compare_branches(brans_values):
227
+ # Seçim yapılmadıysa tüm branşları al
228
+ selected_branches = brans_values if brans_values else all_branches
229
+
230
+ # Sonuçları toplamak için liste
231
+ results = []
232
+ for brans in selected_branches:
233
+ # İlgili branş için toplam ihtiyaç ve norm fazlası değerlerini al
234
+ total_needs = df_ihtiyac[df_ihtiyac['branş'] == brans]['ihtiyac'].sum() if brans in df_ihtiyac['branş'].values else 0
235
+ mazaretli_count = df_norm[(df_norm['Branşı'] == brans) & (df_norm['Açıklamalar'].notna())].shape[0] if brans in df_norm['Branşı'].values else 0
236
+ mazaretsiz_count = df_norm[(df_norm['Branşı'] == brans) & (df_norm['Açıklamalar'].isna())].shape[0] if brans in df_norm['Branşı'].values else 0
237
+
238
+ # Oran hesaplaması, sıfıra bölme hatasından kaçınmak için kontrol
239
+ if total_needs > 0:
240
+ ratio = (mazaretli_count + mazaretsiz_count) / total_needs
241
+ else:
242
+ ratio = float('nan') # Toplam ihtiyaç 0 ise oranı NaN olarak ayarla
243
+
244
+ results.append({
245
+ 'Branş': brans,
246
+ 'Toplam İhtiyaç': total_needs,
247
+ 'Norm Fazlası (Mazaretli)': mazaretli_count,
248
+ 'Norm Fazlası (Mazaretsiz)': mazaretsiz_count,
249
+ 'Oran': ratio
250
+ })
251
+
252
+ # Sonuçları DataFrame olarak döndür
253
+ compare_df = pd.DataFrame(results)
254
+
255
+ # Branş sayısı 10'dan fazlaysa grafik çizdirme
256
+ if len(selected_branches) <= 10:
257
+ # Çubuk grafik oluşturma
258
+ fig, ax1 = plt.subplots(figsize=(10, 6))
259
+
260
+ # İhtiyaç ve norm fazlası verilerini çubuk grafik olarak çiz
261
+ compare_df.set_index('Branş')[['Toplam İhtiyaç', 'Norm Fazlası (Mazaretli)', 'Norm Fazlası (Mazaretsiz)']].plot(kind='bar', ax=ax1)
262
+ ax1.set_ylabel("Sayı")
263
+ ax1.set_xlabel("Branş")
264
+ ax1.set_title("Branş Bazında İhtiyaç, Norm Fazlası ve Oran Karşılaştırması")
265
+ plt.xticks(rotation=45, ha="right")
266
+
267
+ # Oran verilerini ikincil bir eksen olarak çiz
268
+ ax2 = ax1.twinx()
269
+ ax2.plot(compare_df['Branş'], compare_df['Oran'], color='red', marker='o', linestyle='-', linewidth=2)
270
+ ax2.set_ylabel("Oran", color='red')
271
+ ax2.tick_params(axis='y', labelcolor='red')
272
+
273
+ plt.tight_layout()
274
+ chart_path = 'branch_comparison_chart.png'
275
+ plt.savefig(chart_path)
276
+ plt.close()
277
+ else:
278
+ chart_path = None # Grafik gösterilmeyecek
279
+
280
+ return compare_df, chart_path
281
+
282
+ compare_button.click(fn=compare_branches, inputs=[brans_multiselect_compare], outputs=[compare_output, compare_chart])
283
+ # 5. Tab: İlçeleri Karşılaştırma
284
+ with gr.Tab("İlçeleri Karşılaştırma"):
285
+ # İhtiyaç ve norm fazlası veri çerçevelerinde bulunan tüm benzersiz ilçeleri alıyoruz
286
+ all_districts = sorted(set(df_ihtiyac['ilçe'].dropna().unique()).union(df_norm['İlçe Adı'].dropna().unique()))
287
+ ilce_multiselect_compare = gr.Dropdown(choices=all_districts, label="Karşılaştırılacak İlçeleri Seçin", multiselect=True)
288
+
289
+ compare_button_ilce = gr.Button("Karşılaştır")
290
+ compare_output_ilce = gr.DataFrame()
291
+ compare_chart_ilce = gr.Image()
292
+
293
+ def compare_districts(ilce_values):
294
+ # Seçim yapılmadıysa tüm ilçeleri al
295
+ selected_districts = ilce_values if ilce_values else all_districts
296
+
297
+ # Sonuçları toplamak için liste
298
+ results = []
299
+ for ilce in selected_districts:
300
+ # İlgili ilçe için toplam ihtiyaç ve norm fazlası değerlerini al
301
+ total_needs = df_ihtiyac[df_ihtiyac['ilçe'] == ilce]['ihtiyac'].sum() if ilce in df_ihtiyac['ilçe'].values else 0
302
+ mazaretli_count = df_norm[(df_norm['İlçe Adı'] == ilce) & (df_norm['Açıklamalar'].notna())].shape[0] if ilce in df_norm['İlçe Adı'].values else 0
303
+ mazaretsiz_count = df_norm[(df_norm['İlçe Adı'] == ilce) & (df_norm['Açıklamalar'].isna())].shape[0] if ilce in df_norm['İlçe Adı'].values else 0
304
+
305
+ # Oran hesaplaması, sıfıra bölme hatasından kaçınmak için kontrol
306
+ if total_needs > 0:
307
+ ratio = (mazaretli_count + mazaretsiz_count) / total_needs
308
+ else:
309
+ ratio = float('nan') # Toplam ihtiyaç 0 ise oranı NaN olarak ayarla
310
+
311
+ results.append({
312
+ 'İlçe': ilce,
313
+ 'Toplam İhtiyaç': total_needs,
314
+ 'Norm Fazlası (Mazaretli)': mazaretli_count,
315
+ 'Norm Fazlası (Mazaretsiz)': mazaretsiz_count,
316
+ 'Oran': ratio
317
+ })
318
+
319
+ # Sonuçları DataFrame olarak döndür
320
+ compare_df_ilce = pd.DataFrame(results)
321
+
322
+ # İlçe sayısı 10'dan fazlaysa grafik çizdirme
323
+ if len(selected_districts) <= 10:
324
+ # Çubuk grafik oluşturma
325
+ fig, ax1 = plt.subplots(figsize=(10, 6))
326
+
327
+ # İhtiyaç ve norm fazlası verilerini çubuk grafik olarak çiz
328
+ compare_df_ilce.set_index('İlçe')[['Toplam İhtiyaç', 'Norm Fazlası (Mazaretli)', 'Norm Fazlası (Mazaretsiz)']].plot(kind='bar', ax=ax1)
329
+ ax1.set_ylabel("Sayı")
330
+ ax1.set_xlabel("İlçe")
331
+ ax1.set_title("İlçe Bazında İhtiyaç, Norm Fazlası ve Oran Karşılaştırması")
332
+ plt.xticks(rotation=45, ha="right")
333
+
334
+ # Oran verilerini ikincil bir eksen olarak çiz
335
+ ax2 = ax1.twinx()
336
+ ax2.plot(compare_df_ilce['İlçe'], compare_df_ilce['Oran'], color='red', marker='o', linestyle='-', linewidth=2)
337
+ ax2.set_ylabel("Oran", color='red')
338
+ ax2.tick_params(axis='y', labelcolor='red')
339
+
340
+ plt.tight_layout()
341
+ chart_path_ilce = 'district_comparison_chart.png'
342
+ plt.savefig(chart_path_ilce)
343
+ plt.close()
344
+ else:
345
+ chart_path_ilce = None # Grafik gösterilmeyecek
346
+
347
+ return compare_df_ilce, chart_path_ilce
348
+
349
+ compare_button_ilce.click(fn=compare_districts, inputs=[ilce_multiselect_compare], outputs=[compare_output_ilce, compare_chart_ilce])
350
+
351
+ with gr.Tab("İlçe ve Branş Haritası"):
352
+ gr.Markdown("### Seçilen İlçe ve Branş İçin Harita Üzerinde Görselleştirme")
353
+ ilce_dropdown = gr.Dropdown(choices=df_ihtiyac['ilçe'].unique().tolist(), label="İlçe Seçin")
354
+ brans_dropdown = gr.Dropdown(choices=df_ihtiyac['branş'].unique().tolist(), label="Branş Seçin")
355
+ map_output = gr.HTML()
356
+ analyze_button = gr.Button("Haritada Göster")
357
+
358
+ analyze_button.click(
359
+ fn=create_map,
360
+ inputs=[ilce_dropdown, brans_dropdown],
361
+ outputs=[map_output]
362
+ )
363
+ # Run the app
364
+ demo.launch()
ihtiyac_data.xlsx ADDED
Binary file (51.4 kB). View file
 
norm_fazlasi.xlsx ADDED
Binary file (137 kB). View file
 
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ gradio
2
+ pandas
3
+ matplotlib
4
+ folium
5
+ openpyxl