fruitpicker01 commited on
Commit
ca81ddd
·
verified ·
1 Parent(s): 90916d9

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +67 -0
app.py ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import pandas as pd
3
+
4
+ # Ссылки на CSV-файлы
5
+ URL_DASHA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Dasha_2025/main/messages.csv"
6
+ URL_LERA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Lera_2025/main/messages.csv"
7
+ URL_SVETA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Sveta_2025/main/messages.csv"
8
+
9
+ def process_data():
10
+ # Читаем CSV для Даши
11
+ dasha_df = pd.read_csv(URL_DASHA, na_values=["Не выбрано"])
12
+ # Читаем CSV для Леры
13
+ lera_df = pd.read_csv(URL_LERA, na_values=["Не выбрано"])
14
+ # Читаем CSV для Светы
15
+ sveta_df = pd.read_csv(URL_SVETA, na_values=["Не выбрано"])
16
+
17
+ # Функция для подсчёта уникальных строк по нужным столбцам,
18
+ # приравнивая "Не выбрано" к NaN (na_values уже сделал это).
19
+ def count_unique(df):
20
+ # Оставляем только интересующие столбцы
21
+ selected_cols = ["gender", "generation", "industry", "opf"]
22
+ # Убеждаемся, что если какой-то столбец отсутствует, пропускаем его или обрабатываем осторожно
23
+ df_filtered = df[selected_cols].copy()
24
+ # Дропаем дубликаты
25
+ df_filtered.drop_duplicates(inplace=True)
26
+ # Возвращаем количество уникальных строк
27
+ return len(df_filtered)
28
+
29
+ # Подсчитываем по каждому репозиторию
30
+ dasha_count = count_unique(dasha_df)
31
+ lera_count = count_unique(lera_df)
32
+ sveta_count = count_unique(sveta_df)
33
+
34
+ # Считаем суммарное количество
35
+ total_count = dasha_count + lera_count + sveta_count
36
+
37
+ # Расчёт процентов
38
+ # - Итоговый процент от 702 (суммарный)
39
+ total_percent = (total_count / 702) * 100
40
+
41
+ # - Проценты по каждому репозиторию от 117
42
+ dasha_percent = (dasha_count / 117) * 100
43
+ lera_percent = (lera_count / 117) * 100
44
+ sveta_percent = (sveta_count / 117) * 100
45
+
46
+ # Формируем итоговую строку вывода (или можно вернуть словарь)
47
+ result_str = f"""
48
+ Результаты:
49
+ • Даша: {dasha_count} уникальных строк (≈ {dasha_percent:.2f}% из 117)
50
+ • Лера: {lera_count} уникальных строк (≈ {lera_percent:.2f}% из 117)
51
+ • Света: {sveta_count} уникальных строк (≈ {sveta_percent:.2f}% из 117)
52
+
53
+ Суммарно: {total_count} уникальных строк (≈ {total_percent:.2f}% из 702)
54
+ """
55
+ return result_str
56
+
57
+ # Создаём интерфейс Gradio
58
+ with gr.Blocks() as demo:
59
+ gr.Markdown("<h2>Подсчёт уникальных строк для Даши, Леры и Светы</h2>")
60
+ btn = gr.Button("Обновить данные и показать результат")
61
+ output = gr.Textbox(label="Результат")
62
+
63
+ btn.click(fn=process_data, outputs=output)
64
+
65
+ # Запуск приложения (автоматически в Spaces он обычно дергает demo.launch())
66
+ if __name__ == "__main__":
67
+ demo.launch()