Spaces:
Runtime error
Runtime error
| 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( | |
| # """ | |
| # <style> | |
| # .my-table { | |
| # width: 1100px; | |
| # } | |
| # </style> | |
| # """, | |
| # 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) | |