MotoPanda/Potential_2
0
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 