import gradio as gr import pandas as pd # Ссылки на CSV-файлы URL_DASHA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Dasha_2025/main/messages.csv" URL_LERA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Lera_2025/main/messages.csv" URL_SVETA = "https://raw.githubusercontent.com/fruitpicker01/Storage_Sveta_2025/main/messages.csv" def process_data(): # Читаем CSV для Даши dasha_df = pd.read_csv(URL_DASHA, na_values=["Не выбрано"]) # Читаем CSV для Леры lera_df = pd.read_csv(URL_LERA, na_values=["Не выбрано"]) # Читаем CSV для Светы sveta_df = pd.read_csv(URL_SVETA, na_values=["Не выбрано"]) # Функция для подсчёта уникальных строк по нужным столбцам, # приравнивая "Не выбрано" к NaN (na_values уже сделал это). def count_unique(df): # Оставляем только интересующие столбцы selected_cols = ["gender", "generation", "industry", "opf"] # Убеждаемся, что если какой-то столбец отсутствует, пропускаем его или обрабатываем осторожно df_filtered = df[selected_cols].copy() # Дропаем дубликаты df_filtered.drop_duplicates(inplace=True) # Возвращаем количество уникальных строк return len(df_filtered) # Подсчитываем по каждому репозиторию dasha_count = count_unique(dasha_df) lera_count = count_unique(lera_df) sveta_count = count_unique(sveta_df) # Считаем суммарное количество total_count = dasha_count + lera_count + sveta_count # Расчёт процентов # - Итоговый процент от 702 (суммарный) total_percent = (total_count / 702) * 100 # - Проценты по каждому репозиторию от 117 dasha_percent = (dasha_count / 117) * 100 lera_percent = (lera_count / 117) * 100 sveta_percent = (sveta_count / 117) * 100 # Формируем итоговую строку вывода (или можно вернуть словарь) result_str = f""" Результаты: • Даша: {dasha_count} уникальных строк (≈ {dasha_percent:.2f}% из 117) • Лера: {lera_count} уникальных строк (≈ {lera_percent:.2f}% из 117) • Света: {sveta_count} уникальных строк (≈ {sveta_percent:.2f}% из 117) Суммарно: {total_count} уникальных строк (≈ {total_percent:.2f}% из 702) """ return result_str # Создаём интерфейс Gradio with gr.Blocks() as demo: gr.Markdown("

Подсчёт уникальных строк для Даши, Леры и Светы

") btn = gr.Button("Обновить данные и показать результат") output = gr.Textbox(label="Результат") btn.click(fn=process_data, outputs=output) # Запуск приложения (автоматически в Spaces он обычно дергает demo.launch()) if __name__ == "__main__": demo.launch()