drmurataltun commited on
Commit
775d523
·
verified ·
1 Parent(s): fee7252

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +14 -22
app.py CHANGED
@@ -23,46 +23,42 @@ def filter_dataframe(ilce_values, brans_values, aciklama_values, include_empty_a
23
 
24
  return df, f"Kayıt Sayısı: {len(df)}"
25
 
26
- # Calculate needs and norm excess per district
27
  # Calculate needs and norm excess per district
28
  def calculate_needs_and_norm(ilce_values, brans_values):
29
- df_ihtiyac_filtered = df_ihtiyac.copy() # İhtiyaç verisini kopyalıyoruz
 
 
30
 
31
- # Aynı filtrelemeyi burada da uyguluyoruz
32
  if ilce_values and "Tüm İlçeler" not in ilce_values:
33
  df_ihtiyac_filtered = df_ihtiyac_filtered[df_ihtiyac_filtered['ilçe'].isin(ilce_values)]
34
  if brans_values:
35
  df_ihtiyac_filtered = df_ihtiyac_filtered[df_ihtiyac_filtered['branş'].isin(brans_values)]
36
 
37
- # İhtiyaç verisinden toplam ihtiyacı tek seferde hesaplıyoruz
38
  total_needs_sum = df_ihtiyac_filtered['ihtiyac'].sum()
39
-
40
- # Orijinal norm fazlası ve mazaretli, mazaretsiz sayısını hesaplama
41
- df_norm_filtered = df_norm.copy()
42
- if ilce_values and "Tüm İlçeler" not in ilce_values:
43
- df_norm_filtered = df_norm_filtered[df_norm_filtered['İlçe Adı'].isin(ilce_values)]
44
- if brans_values:
45
- df_norm_filtered = df_norm_filtered[df_norm['Branşı'].isin(brans_values)]
46
-
47
  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()
48
  unique_brans_values = brans_values if brans_values else df_norm['Branşı'].unique().tolist()
49
-
50
- results = []
51
  for ilce in unique_ilce_values:
52
  df_norm_ilce = df_norm_filtered[df_norm_filtered['İlçe Adı'] == ilce]
53
 
54
  for brans in unique_brans_values:
 
 
55
  mazaretli_count = df_norm_ilce[(df_norm_ilce['Branşı'] == brans) & (df_norm_ilce['Açıklamalar'].notna())].shape[0]
56
  mazaretsiz_count = df_norm_ilce[(df_norm_ilce['Branşı'] == brans) & (df_norm_ilce['Açıklamalar'].isna())].shape[0]
57
 
58
  results.append({
59
  'İlçe': ilce,
60
  'Branş': brans,
61
- 'Toplam İhtiyaç': total_needs_sum, # Tek seferde hesaplanan toplam ihtiyaç
62
  'Norm Fazlası (Mazaretli)': mazaretli_count,
63
  'Norm Fazlası (Mazaretsiz)': mazaretsiz_count
64
  })
65
-
66
  result_df = pd.DataFrame(results)
67
  total_mazaretli_sum = result_df['Norm Fazlası (Mazaretli)'].sum()
68
  total_mazaretsiz_sum = result_df['Norm Fazlası (Mazaretsiz)'].sum()
@@ -73,6 +69,7 @@ def calculate_needs_and_norm(ilce_values, brans_values):
73
 
74
  return result_df, summary_text
75
 
 
76
  # Function to plot the results as a bar chart
77
  def plot_results(df):
78
  plt.figure(figsize=(14, 8)) # Grafik boyutunu artırıyoruz
@@ -86,7 +83,6 @@ def plot_results(df):
86
  plt.savefig(chart_path)
87
  return chart_path # Dosya yolunu döndür
88
 
89
- # Function to filter "ihtiyac" data based on selected ilce and brans
90
  # Function to filter "ihtiyac" data based on selected ilce and brans
91
  def filter_ihtiyac_data(ilce_values, brans_values, include_empty_aciklama=False):
92
  df_filtered = df_ihtiyac.copy()
@@ -96,7 +92,6 @@ def filter_ihtiyac_data(ilce_values, brans_values, include_empty_aciklama=False)
96
  if brans_values:
97
  df_filtered = df_filtered[df_filtered['branş'].isin(brans_values)]
98
 
99
- # Include rows with empty açıklama if the checkbox is checked
100
  if include_empty_aciklama:
101
  df_filtered = pd.concat([df_filtered, df_filtered[df_filtered['Açıklamalar'].isna()]]).drop_duplicates()
102
 
@@ -125,12 +120,10 @@ with gr.Blocks() as demo:
125
  brans_multiselect_ihtiyac = gr.Dropdown(choices=sorted(df_ihtiyac['branş'].dropna().unique().tolist()), label="Select Branşı", multiselect=True)
126
 
127
  analyze_button = gr.Button("Analiz Et")
128
- analysis_chart = gr.Image() # Görselleştirme için resim bileşeni ekliyoruz
129
  analysis_record_count = gr.Textbox(label="Özet Bilgi", interactive=False)
130
  analysis_output = gr.DataFrame()
131
-
132
 
133
- # Set up the interaction
134
  def analyze_and_plot(ilce_values, brans_values):
135
  result_df, summary_text = calculate_needs_and_norm(ilce_values, brans_values)
136
  chart_path = plot_results(result_df)
@@ -147,7 +140,6 @@ with gr.Blocks() as demo:
147
  ihtiyac_total_count = gr.Textbox(label="Toplam İhtiyaç", interactive=False)
148
  ihtiyac_output = gr.DataFrame()
149
 
150
- # Set up the interaction for the third tab
151
  filter_ihtiyac_button.click(fn=filter_ihtiyac_data, inputs=[ilce_multiselect_ihtiyac_filter, brans_multiselect_ihtiyac_filter], outputs=[ihtiyac_output, ihtiyac_total_count])
152
 
153
  # Run the app
 
23
 
24
  return df, f"Kayıt Sayısı: {len(df)}"
25
 
 
26
  # Calculate needs and norm excess per district
27
  def calculate_needs_and_norm(ilce_values, brans_values):
28
+ # İlçe ve branş filtreleme işlemi
29
+ df_ihtiyac_filtered = df_ihtiyac.copy()
30
+ df_norm_filtered = df_norm.copy()
31
 
 
32
  if ilce_values and "Tüm İlçeler" not in ilce_values:
33
  df_ihtiyac_filtered = df_ihtiyac_filtered[df_ihtiyac_filtered['ilçe'].isin(ilce_values)]
34
  if brans_values:
35
  df_ihtiyac_filtered = df_ihtiyac_filtered[df_ihtiyac_filtered['branş'].isin(brans_values)]
36
 
37
+ # Özet bilgi için toplam ihtiyaç sayısını direkt olarak hesaplama
38
  total_needs_sum = df_ihtiyac_filtered['ihtiyac'].sum()
39
+
40
+ # Sonuçları toplamak için liste
41
+ results = []
 
 
 
 
 
42
  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()
43
  unique_brans_values = brans_values if brans_values else df_norm['Branşı'].unique().tolist()
44
+
 
45
  for ilce in unique_ilce_values:
46
  df_norm_ilce = df_norm_filtered[df_norm_filtered['İlçe Adı'] == ilce]
47
 
48
  for brans in unique_brans_values:
49
+ # Her ilçe ve branş için ilgili ihtiyaç miktarını hesapla
50
+ total_needs = df_ihtiyac_filtered[(df_ihtiyac_filtered['ilçe'] == ilce) & (df_ihtiyac_filtered['branş'] == brans)]['ihtiyac'].sum()
51
  mazaretli_count = df_norm_ilce[(df_norm_ilce['Branşı'] == brans) & (df_norm_ilce['Açıklamalar'].notna())].shape[0]
52
  mazaretsiz_count = df_norm_ilce[(df_norm_ilce['Branşı'] == brans) & (df_norm_ilce['Açıklamalar'].isna())].shape[0]
53
 
54
  results.append({
55
  'İlçe': ilce,
56
  'Branş': brans,
57
+ 'Toplam İhtiyaç': total_needs, # Her ilçe ve branşa özgü toplam ihtiyaç
58
  'Norm Fazlası (Mazaretli)': mazaretli_count,
59
  'Norm Fazlası (Mazaretsiz)': mazaretsiz_count
60
  })
61
+
62
  result_df = pd.DataFrame(results)
63
  total_mazaretli_sum = result_df['Norm Fazlası (Mazaretli)'].sum()
64
  total_mazaretsiz_sum = result_df['Norm Fazlası (Mazaretsiz)'].sum()
 
69
 
70
  return result_df, summary_text
71
 
72
+
73
  # Function to plot the results as a bar chart
74
  def plot_results(df):
75
  plt.figure(figsize=(14, 8)) # Grafik boyutunu artırıyoruz
 
83
  plt.savefig(chart_path)
84
  return chart_path # Dosya yolunu döndür
85
 
 
86
  # Function to filter "ihtiyac" data based on selected ilce and brans
87
  def filter_ihtiyac_data(ilce_values, brans_values, include_empty_aciklama=False):
88
  df_filtered = df_ihtiyac.copy()
 
92
  if brans_values:
93
  df_filtered = df_filtered[df_filtered['branş'].isin(brans_values)]
94
 
 
95
  if include_empty_aciklama:
96
  df_filtered = pd.concat([df_filtered, df_filtered[df_filtered['Açıklamalar'].isna()]]).drop_duplicates()
97
 
 
120
  brans_multiselect_ihtiyac = gr.Dropdown(choices=sorted(df_ihtiyac['branş'].dropna().unique().tolist()), label="Select Branşı", multiselect=True)
121
 
122
  analyze_button = gr.Button("Analiz Et")
123
+ analysis_chart = gr.Image()
124
  analysis_record_count = gr.Textbox(label="Özet Bilgi", interactive=False)
125
  analysis_output = gr.DataFrame()
 
126
 
 
127
  def analyze_and_plot(ilce_values, brans_values):
128
  result_df, summary_text = calculate_needs_and_norm(ilce_values, brans_values)
129
  chart_path = plot_results(result_df)
 
140
  ihtiyac_total_count = gr.Textbox(label="Toplam İhtiyaç", interactive=False)
141
  ihtiyac_output = gr.DataFrame()
142
 
 
143
  filter_ihtiyac_button.click(fn=filter_ihtiyac_data, inputs=[ilce_multiselect_ihtiyac_filter, brans_multiselect_ihtiyac_filter], outputs=[ihtiyac_output, ihtiyac_total_count])
144
 
145
  # Run the app