import streamlit as st import pandas as pd import numpy as np import json import random import matplotlib.pyplot as plt st.title('Каталог профессий IT и Продажи') st.sidebar.title('Выбор параметров для подбора вакансий') with open('main_table.json', 'r') as json_file: data_main = json.load(json_file) df1 = pd.DataFrame(data_main) with open('dop_table.json', 'r') as json_file: data_dop = json.load(json_file) df2= pd.DataFrame(data_dop) dohod = 0 i = 0 with st.sidebar: sphere = st.selectbox( "Выбери сферу:", options = list(df1['Сфера'].unique()), key=i) # st.write("Выбрано:", sphere) # st.write(df.columns) dohod = st.number_input( "Введите уровень дохода", key=f"number_input_{i}" # ("IT", "Продажи") ) st.write("Выбрано:", dohod) # df2 = df[df['ЗП в вакансии'] >= dohod] sphere_change = st.selectbox( "Готов ли менять сферу", options = ["Да", "Нет"], key=f"{i+1}m", index=None, ) st.write("Выбрано:", sphere_change) gotov_uchitsia = st.selectbox( "Готов ли обучаться", options = ["Да", "Нет"], key=f"{i+1}ml", index=None, ) st.write("Выбрано:", gotov_uchitsia) st.header('Выберите навыки, которые у Вас есть') python = st.checkbox("Python", key=f"{i+1}mlr") sql = st.checkbox("SQL", key=f"{i+1}mlrq") html = st.checkbox("HTML", key=f"{i+1}mlrw") java = st.checkbox("Java", key=f"{i+1}mlre") figma = st.checkbox("Figma", key=f"{i+1}mlrr") power_bi = st.checkbox("Power BI", key=f"{i+1}mlrt") prodaji = st.checkbox("Продажи", key=f"{i+1}mlry") analys_prodaj = st.checkbox("Анализ продаж", key=f"{i+1}mlru") work_with_clients = st.checkbox("Работа с клиентами", key=f"{i+1}mlri") riteil = st.checkbox("Ритейл", key=f"{i+1}mlrl") i+=1 but = st.button('Данные введены в полном объеме', key=f"{i+1}mlurl") list_skills=[] if but: if python: list_skills.append('Python') if sql: list_skills.append('SQL') if html: list_skills.append('HTML') if java: list_skills.append('Java') if figma: list_skills.append('Figma') if power_bi: list_skills.append('Power BI') if prodaji: list_skills.append('Продажи') if work_with_clients: list_skills.append('Работа с клиентами') if riteil: list_skills.append('ритейл') def table(sphere: str, list_with_skills: list, dohod: int, sphere_change, gotov_uchitsia): new_df = pd.merge(df1, df2, on='Навыки', how='outer') if sphere_change == "Да": mask_sphere = new_df['Сфера'] != 0 else: mask_sphere = new_df['Сфера'] == sphere new_df2 = new_df[new_df['ЗП в вакансии'] >= dohod][mask_sphere] new_df2['Есть_в_списке'] = new_df2['Навыки'].apply(lambda x: 1 if x in list_with_skills else 0) result = new_df2.groupby(['Профессия', 'Сфера', 'ЗП в вакансии']).agg( Skill=('Навыки', set), Cours=('курс', set), Links=('ссылка', set), On_list=('Есть_в_списке', set) ).reset_index() def calculate_difference(row): cell_set = set(row['Skill']) # Преобразуем список в набор test_set = set(list_with_skills) # Преобразуем list_test в набор return list(cell_set - test_set) result['Недостающие навыки'] = result.apply(calculate_difference, axis=1) result['Требуемые навыки для позиции'] = result['Skill'] result['Наименования доступных курсов'] = result['Cours'] result['Ссылки на курс'] = result['Links'] if gotov_uchitsia == "Нет": mask_ucheba = (result['On_list'] != {0}) & (result['On_list'] != {0, 1}) else: mask_ucheba = result['On_list'] != {5} # try: result = result[mask_ucheba] # except: # result =result result2 = result[['Сфера', 'Профессия', 'ЗП в вакансии', 'Требуемые навыки для позиции', 'Недостающие навыки', 'Наименования доступных курсов', 'Ссылки на курс']] return result2 df_fin = table(sphere, list_skills, dohod, sphere_change, gotov_uchitsia) st.header('Рост Вашего дохода') labels = ['Доход сейчас', 'Доход через год', 'Доход через 2 года'] values = [dohod, dohod*1.1, dohod*1.2] fig, ax = plt.subplots() # fig.set_size_inches(10, 5) ax.bar(labels, values) # , color = ['blue', 'orange', 'green']) ax.set_ylabel('Сумма, руб') ax.set_title('Сравнение доходов') st.pyplot(fig) st.header('Вакансии, которые вам будут интересны') st.dataframe(df_fin, width=1100, height=500) # st.write(but) # st.write(python) # st.write(html) # st.write(sphere_change) # st.write(gotov_uchitsia) # mask_sphere = df1['Сфера '] == sphere # # if sphere_change == "Да": # mask_sphere = df1['Сфера '] != 0 # # st.header('Вакансии, которые вам будут интересны') # df1 = df1[mask_sphere][df1['ЗП в вакансии'] >= dohod] # df1 = df1[['Сфера ', 'Профессия ', 'ЗП в вакансии', 'Навыки ']] # st.markdown( # """ # # """, # unsafe_allow_html=True # ) # # # st.dataframe(df1, width=1900, height=300) # # # # st.header('Возможности обучения') # # df2 = df[df['Сфера '] == sphere][df['ЗП в вакансии'] >= dohod][~df['Навыки '].isin(list_skills)] # df2 = pd.merge(df2, df_dop, on='Навыки ', how='left') # st.dataframe(df_fin, width=1100, height=1000)