fruitpicker01 commited on
Commit
840ee09
·
verified ·
1 Parent(s): 6b59ec0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -13
app.py CHANGED
@@ -6,11 +6,16 @@ from prophet import Prophet
6
  import io
7
  from PIL import Image
8
 
9
- # Ссылки на CSV-файлы
10
  URL_DASHA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Dasha_2025/main/messages.csv"
11
- URL_LERA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Lera_2025/main/messages.csv"
12
  URL_SVETA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Sveta_2025/main/messages.csv"
13
 
 
 
 
 
 
14
  def read_and_process_data(url, user_name):
15
  """
16
  Считывает CSV, отбирает нужные столбцы,
@@ -141,18 +146,47 @@ def make_average_forecast(total_by_date, end_date_str="2025-03-15"):
141
  def process_data():
142
  print("\n=== Начинаем process_data (Seaborn + Prophet + средний) ===")
143
 
144
- # 1) Считываем CSV
145
  dasha_count, dasha_daily = read_and_process_data(URL_DASHA, "Даша")
146
  lera_count, lera_daily = read_and_process_data(URL_LERA, "Лера")
147
  sveta_count, sveta_daily = read_and_process_data(URL_SVETA, "Света")
148
 
149
- total_count = dasha_count + lera_count + sveta_count
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  print(f"Суммарное количество (Д+Л+С): {total_count}")
151
 
152
- # 2) Прогресс-бары
153
- dasha_percent = round((dasha_count / 234) * 100) if 234 else 0
154
- lera_percent = round((lera_count / 234) * 100) if 234 else 0
155
- sveta_percent = round((sveta_count / 234) * 100) if 234 else 0
 
156
  total_percent = round((total_count / 702) * 100) if 702 else 0
157
 
158
  def get_progress_bar(label, abs_val, pct):
@@ -168,14 +202,14 @@ def process_data():
168
  </div>
169
  """
170
  bars_html = (
171
- get_progress_bar("Даша", dasha_count, dasha_percent) +
172
- get_progress_bar("Лера", lera_count, lera_percent) +
173
- get_progress_bar("Света", sveta_count, sveta_percent) +
174
  get_progress_bar("Всего", total_count, total_percent)
175
  )
176
 
177
- # 3) Формируем общий DF
178
- daily_all = pd.concat([dasha_daily, lera_daily, sveta_daily], ignore_index=True)
179
  daily_all = daily_all.dropna(subset=["date"])
180
  daily_all = daily_all.sort_values(["user", "date"])
181
  daily_all["cumulative"] = daily_all.groupby("user")["count"].cumsum()
 
6
  import io
7
  from PIL import Image
8
 
9
+ # Первые наборы CSV-файлов
10
  URL_DASHA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Dasha_2025/main/messages.csv"
11
+ URL_LERA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Lera_2025/main/messages.csv"
12
  URL_SVETA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Sveta_2025/main/messages.csv"
13
 
14
+ # Вторые наборы CSV-файлов
15
+ URL_DASHA_2 = "https://raw.githubusercontent.com/fruitpicker01/Storage_2_Dasha_2025/main/messages.csv"
16
+ URL_LERA_2 = "https://raw.githubusercontent.com/fruitpicker01/Storage_2_Lera_2025/main/messages.csv"
17
+ URL_SVETA_2 = "https://raw.githubusercontent.com/fruitpicker01/Storage_2_Sveta_2025/main/messages.csv"
18
+
19
  def read_and_process_data(url, user_name):
20
  """
21
  Считывает CSV, отбирает нужные столбцы,
 
146
  def process_data():
147
  print("\n=== Начинаем process_data (Seaborn + Prophet + средний) ===")
148
 
149
+ # Чтение основного файла
150
  dasha_count, dasha_daily = read_and_process_data(URL_DASHA, "Даша")
151
  lera_count, lera_daily = read_and_process_data(URL_LERA, "Лера")
152
  sveta_count, sveta_daily = read_and_process_data(URL_SVETA, "Света")
153
 
154
+ # Чтение второго набора данных обработкой ошибок)
155
+ try:
156
+ dasha_count2, dasha_daily2 = read_and_process_data(URL_DASHA_2, "Даша (2)")
157
+ except Exception as e:
158
+ print(f"[Даша (2)] Ошибка при чтении дополнительного CSV: {e}")
159
+ dasha_count2, dasha_daily2 = 0, pd.DataFrame(columns=["date", "count", "user"])
160
+
161
+ try:
162
+ lera_count2, lera_daily2 = read_and_process_data(URL_LERA_2, "Лера (2)")
163
+ except Exception as e:
164
+ print(f"[Лера (2)] Ошибка при чтении дополнительного CSV: {e}")
165
+ lera_count2, lera_daily2 = 0, pd.DataFrame(columns=["date", "count", "user"])
166
+
167
+ try:
168
+ sveta_count2, sveta_daily2 = read_and_process_data(URL_SVETA_2, "Света (2)")
169
+ except Exception as e:
170
+ print(f"[Света (2)] Ошибка при чтении дополнительного CSV: {e}")
171
+ sveta_count2, sveta_daily2 = 0, pd.DataFrame(columns=["date", "count", "user"])
172
+
173
+ # Объединяем основные и дополнительные данные по каждому пользователю
174
+ dasha_count_total = dasha_count + dasha_count2
175
+ lera_count_total = lera_count + lera_count2
176
+ sveta_count_total = sveta_count + sveta_count2
177
+
178
+ dasha_daily_total = pd.concat([dasha_daily, dasha_daily2], ignore_index=True)
179
+ lera_daily_total = pd.concat([lera_daily, lera_daily2], ignore_index=True)
180
+ sveta_daily_total = pd.concat([sveta_daily, sveta_daily2], ignore_index=True)
181
+
182
+ total_count = dasha_count_total + lera_count_total + sveta_count_total
183
  print(f"Суммарное количество (Д+Л+С): {total_count}")
184
 
185
+ # Остальной код (прогресс-бары, объединение DataFrame, графики)
186
+ # замените исходные переменные на объединённые *_total
187
+ dasha_percent = round((dasha_count_total / 234) * 100) if 234 else 0
188
+ lera_percent = round((lera_count_total / 234) * 100) if 234 else 0
189
+ sveta_percent = round((sveta_count_total / 234) * 100) if 234 else 0
190
  total_percent = round((total_count / 702) * 100) if 702 else 0
191
 
192
  def get_progress_bar(label, abs_val, pct):
 
202
  </div>
203
  """
204
  bars_html = (
205
+ get_progress_bar("Даша", dasha_count_total, dasha_percent) +
206
+ get_progress_bar("Лера", lera_count_total, lera_percent) +
207
+ get_progress_bar("Света", sveta_count_total, sveta_percent) +
208
  get_progress_bar("Всего", total_count, total_percent)
209
  )
210
 
211
+ # Объединение ежедневных данных для построения графика
212
+ daily_all = pd.concat([dasha_daily_total, lera_daily_total, sveta_daily_total], ignore_index=True)
213
  daily_all = daily_all.dropna(subset=["date"])
214
  daily_all = daily_all.sort_values(["user", "date"])
215
  daily_all["cumulative"] = daily_all.groupby("user")["count"].cumsum()