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) | |