import gradio as gr import pandas as pd df = pd.read_excel('для Gradio финал.xlsx') df['Регион'] = df['Регион'].fillna('').astype(str) def format_output(data): result = [] count = 1 for _, row in data.iterrows(): project_info = f""" **Объект-аналог №{count}** **Проект**: {row['Наименование инвестиционного проекта']} **Идентификатор**: {row['Идентификатор инвестиционного проекта']} **Объект**: {row['Наименование одного объекта, где реализуется типовое технологическое решение']} **Регион**: {row['Регион']} """ result.append(project_info) count += 1 return "\n".join(result) def filter_data(project_type, object_type, voltage, region): try: if not (project_type and object_type and voltage and region): return "Вы не указали все необходимые параметры для подбора объекта-аналога" filtered_data = df[ (df['Тип проекта'] == project_type) & (df['Объект'] == object_type) & (df['Высшее напряжение'] == int(voltage)) ] regional_data = filtered_data[filtered_data['Регион'] == region] if regional_data.empty: message = "**Объект-аналог в том же регионе отсутствует, ищу по всей стране.**\n" national_data = filtered_data.drop_duplicates(subset=['Наименование инвестиционного проекта', 'Идентификатор инвестиционного проекта', 'Наименование одного объекта, где реализуется типовое технологическое решение', 'Регион']) if national_data.empty: return message + "Объект-аналог в рамках текущей ИПР Россети ФСК не найден." else: return message + format_output(national_data) else: return format_output(regional_data) except Exception as e: return f"Ошибка: {str(e)}" with gr.Blocks() as demo: gr.Markdown("# Подбор объектов-аналогов для прогнозирования недостающих технических характеристик") gr.Markdown("## Введите параметры для поиска:") with gr.Row(): with gr.Column(): gr.Markdown("### Исходные данные") project_type = gr.Radio(choices=['Строительство', 'Реконструкция'], label="Тип проекта") object_type = gr.Radio(choices=['ПС', 'ВЛ', 'КЛ'], label="Объект") voltage = gr.Radio(choices=['6', '10', '35', '110', '220', '330', '400', '500', '750', '1150'], label="Напряжение, кВ") region = gr.Dropdown(choices=sorted(df['Регион'].unique()), label="Регион") submit_btn = gr.Button("Поиск") with gr.Column(): gr.Markdown("### Результаты подбора объектов-аналогов") output = gr.Markdown() submit_btn.click(filter_data, inputs=[project_type, object_type, voltage, region], outputs=output) demo.launch()