CoolFace
Apppublic

MotoPanda/Potential_2

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
app.py180 linesDownload Raw Back to root
1import streamlit as st2import pandas as pd3import numpy as np4import json5import random6import matplotlib.pyplot as plt7st.title('Каталог профессий IT и Продажи')8 9st.sidebar.title('Выбор параметров для подбора вакансий')10 11with open('main_table.json', 'r') as json_file:12    data_main = json.load(json_file)13df1 = pd.DataFrame(data_main)14 15with open('dop_table.json', 'r') as json_file:16    data_dop = json.load(json_file)17df2= pd.DataFrame(data_dop)18 19dohod = 020i = 021 22with st.sidebar:23    sphere = st.selectbox(24        "Выбери сферу:", options = list(df1['Сфера'].unique()), key=i)25    # st.write("Выбрано:", sphere)26 27    # st.write(df.columns)28 29    dohod = st.number_input(30        "Введите уровень дохода", key=f"number_input_{i}"31        # ("IT", "Продажи")32    )33    st.write("Выбрано:", dohod)34 35    # df2 = df[df['ЗП в вакансии'] >= dohod]36 37    sphere_change = st.selectbox(38        "Готов ли менять сферу", options = ["Да", "Нет"], key=f"{i+1}m",39        index=None,40    )41 42    st.write("Выбрано:", sphere_change)43 44    gotov_uchitsia = st.selectbox(45        "Готов ли обучаться",46        options = ["Да", "Нет"], key=f"{i+1}ml",47        index=None,48    )49 50    st.write("Выбрано:", gotov_uchitsia)51    st.header('Выберите навыки, которые у Вас есть')52 53    python = st.checkbox("Python", key=f"{i+1}mlr")54    sql = st.checkbox("SQL", key=f"{i+1}mlrq")55    html = st.checkbox("HTML", key=f"{i+1}mlrw")56    java = st.checkbox("Java", key=f"{i+1}mlre")57    figma = st.checkbox("Figma", key=f"{i+1}mlrr")58    power_bi = st.checkbox("Power BI", key=f"{i+1}mlrt")59    prodaji = st.checkbox("Продажи", key=f"{i+1}mlry")60    analys_prodaj = st.checkbox("Анализ продаж", key=f"{i+1}mlru")61    work_with_clients = st.checkbox("Работа с клиентами", key=f"{i+1}mlri")62    riteil = st.checkbox("Ритейл", key=f"{i+1}mlrl")63    i+=164    but = st.button('Данные введены в полном объеме', key=f"{i+1}mlurl")65    list_skills=[]66    if but:67        if python:68            list_skills.append('Python')69        if sql:70            list_skills.append('SQL')71        if html:72            list_skills.append('HTML')73        if java:74            list_skills.append('Java')75        if figma:76            list_skills.append('Figma')77        if power_bi:78            list_skills.append('Power BI')79        if prodaji:80            list_skills.append('Продажи')81        if work_with_clients:82            list_skills.append('Работа с клиентами')83        if riteil:84            list_skills.append('ритейл')85 86 87def table(sphere: str, list_with_skills: list, dohod: int, sphere_change, gotov_uchitsia):88    new_df = pd.merge(df1, df2, on='Навыки', how='outer')89    if sphere_change == "Да":90        mask_sphere = new_df['Сфера'] != 091    else:92        mask_sphere = new_df['Сфера'] == sphere93    new_df2 = new_df[new_df['ЗП в вакансии'] >= dohod][mask_sphere]94    new_df2['Есть_в_списке'] = new_df2['Навыки'].apply(lambda x: 1 if x in list_with_skills else 0)95    result = new_df2.groupby(['Профессия', 'Сфера', 'ЗП в вакансии']).agg(96        Skill=('Навыки', set),97        Cours=('курс', set),98        Links=('ссылка', set),99        On_list=('Есть_в_списке', set)100    ).reset_index()101 102 103    def calculate_difference(row):104        cell_set = set(row['Skill'])  # Преобразуем список в набор105        test_set = set(list_with_skills)  # Преобразуем list_test в набор106        return list(cell_set - test_set)107 108    result['Недостающие навыки'] = result.apply(calculate_difference, axis=1)109    result['Требуемые навыки для позиции'] = result['Skill']110    result['Наименования доступных курсов'] = result['Cours']111    result['Ссылки на курс'] = result['Links']112 113    if gotov_uchitsia == "Нет":114        mask_ucheba = (result['On_list'] != {0}) &  (result['On_list'] != {0, 1})115    else:116        mask_ucheba = result['On_list'] != {5}117 118    # try:119    result = result[mask_ucheba]120    # except:121    #     result =result122 123    result2 = result[['Сфера', 'Профессия', 'ЗП в вакансии', 'Требуемые навыки для позиции', 'Недостающие навыки',124                      'Наименования доступных курсов',125                      'Ссылки на курс']]126    return result2127 128 129df_fin = table(sphere, list_skills, dohod, sphere_change, gotov_uchitsia)130 131st.header('Рост Вашего дохода')132labels = ['Доход сейчас', 'Доход через год', 'Доход через 2 года']133values = [dohod, dohod*1.1, dohod*1.2]134fig, ax = plt.subplots()135 136# fig.set_size_inches(10, 5)137ax.bar(labels, values)138# , color = ['blue', 'orange', 'green'])139ax.set_ylabel('Сумма, руб')140ax.set_title('Сравнение доходов')141st.pyplot(fig)142 143st.header('Вакансии, которые вам будут интересны')144st.dataframe(df_fin, width=1100, height=500)145 146# st.write(but)147# st.write(python)148# st.write(html)149# st.write(sphere_change)150# st.write(gotov_uchitsia)151# mask_sphere = df1['Сфера '] == sphere152#153# if sphere_change == "Да":154#     mask_sphere = df1['Сфера '] != 0155#156# st.header('Вакансии, которые вам будут интересны')157# df1 = df1[mask_sphere][df1['ЗП в вакансии'] >= dohod]158# df1 = df1[['Сфера ', 'Профессия ', 'ЗП в вакансии', 'Навыки ']]159# st.markdown(160#     """161#     <style>162#     .my-table {163#         width: 1100px;164#     }165#     </style>166#     """,167#     unsafe_allow_html=True168# )169#170#171# st.dataframe(df1, width=1900, height=300)172#173#174#175# st.header('Возможности обучения')176#177# df2 = df[df['Сфера '] == sphere][df['ЗП в вакансии'] >= dohod][~df['Навыки '].isin(list_skills)]178# df2 = pd.merge(df2, df_dop, on='Навыки ', how='left')179# st.dataframe(df_fin, width=1100, height=1000)180