|
import gradio as gr |
|
import pandas as pd |
|
|
|
|
|
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(): |
|
|
|
dasha_df = pd.read_csv(URL_DASHA, na_values=["Не выбрано"]) |
|
|
|
lera_df = pd.read_csv(URL_LERA, na_values=["Не выбрано"]) |
|
|
|
sveta_df = pd.read_csv(URL_SVETA, 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 |
|
|
|
|
|
|
|
total_percent = (total_count / 702) * 100 |
|
|
|
|
|
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 |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("<h2>Подсчёт уникальных строк для Даши, Леры и Светы</h2>") |
|
btn = gr.Button("Обновить данные и показать результат") |
|
output = gr.Textbox(label="Результат") |
|
|
|
btn.click(fn=process_data, outputs=output) |
|
|
|
|
|
if __name__ == "__main__": |
|
demo.launch() |