Spaces:
Sleeping
Sleeping
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() |