File size: 3,623 Bytes
51791f9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2a47dfb
51791f9
 
 
2a47dfb
b1fcb2c
2a47dfb
 
 
 
 
 
 
 
 
 
 
 
 
51791f9
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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()