Spaces:
Running
Running
Update app.py
Browse filesдобавление вакансий
фикс ошибки с доходом
app.py
CHANGED
@@ -21,19 +21,30 @@ i = 0
|
|
21 |
|
22 |
with st.sidebar:
|
23 |
sphere = st.selectbox(
|
24 |
-
"Выбери сферу:", options = list(df1['Сфера'].unique()), key=
|
25 |
-
|
|
|
|
|
|
|
|
|
26 |
|
27 |
# st.write(df.columns)
|
28 |
|
29 |
dohod = st.number_input(
|
30 |
-
"Введите уровень дохода",
|
|
|
|
|
|
|
|
|
31 |
# ("IT", "Продажи")
|
32 |
)
|
33 |
st.write("Выбрано:", dohod)
|
34 |
|
35 |
age = st.number_input(
|
36 |
-
"Введите возраст"
|
|
|
|
|
|
|
37 |
# ("IT", "Продажи")
|
38 |
)
|
39 |
st.write("Введено:", age)
|
@@ -90,13 +101,17 @@ with st.sidebar:
|
|
90 |
list_skills.append('ритейл')
|
91 |
|
92 |
|
93 |
-
def table(sphere: str, list_with_skills: list, dohod
|
94 |
new_df = pd.merge(df1, df2, on='Навыки', how='outer')
|
95 |
if sphere_change == "Да":
|
96 |
mask_sphere = new_df['Сфера'] != 0
|
97 |
else:
|
98 |
mask_sphere = new_df['Сфера'] == sphere
|
99 |
-
|
|
|
|
|
|
|
|
|
100 |
new_df2['Есть_в_списке'] = new_df2['Навыки'].apply(lambda x: 1 if x in list_with_skills else 0)
|
101 |
result = new_df2.groupby(['Профессия', 'Сфера', 'ЗП в вакансии']).agg(
|
102 |
Skill=('Навыки', set),
|
@@ -109,22 +124,16 @@ def table(sphere: str, list_with_skills: list, dohod: int, sphere_change, gotov_
|
|
109 |
def calculate_difference(row):
|
110 |
cell_set = set(row['Skill']) # Преобразуем список в набор
|
111 |
test_set = set(list_with_skills) # Преобразуем list_test в набор
|
112 |
-
return
|
|
|
113 |
|
114 |
result['Недостающие навыки'] = result.apply(calculate_difference, axis=1)
|
115 |
result['Требуемые навыки для позиции'] = result['Skill']
|
116 |
result['Наименования доступных курсов'] = result['Cours']
|
117 |
result['Ссылки на курс'] = result['Links']
|
118 |
|
119 |
-
if gotov_uchitsia == "Нет":
|
120 |
-
mask_ucheba = (result['On_list'] != {0}) & (result['On_list'] != {0, 1})
|
121 |
-
else:
|
122 |
-
mask_ucheba = result['On_list'] != {5}
|
123 |
|
124 |
-
|
125 |
-
result = result[mask_ucheba]
|
126 |
-
# except:
|
127 |
-
# result =result
|
128 |
|
129 |
result2 = result[['Сфера', 'Профессия', 'ЗП в вакансии', 'Требуемые навыки для позиции', 'Недостающие навыки',
|
130 |
'Наименования доступных курсов',
|
@@ -153,12 +162,19 @@ ax.set_ylabel('Сумма, руб')
|
|
153 |
ax.set_title('Сравнение доходов')
|
154 |
ax.grid(True) # Добавление сетки
|
155 |
|
|
|
156 |
# Отображение графика
|
157 |
st.pyplot(fig)
|
|
|
|
|
|
|
|
|
158 |
|
159 |
-
|
|
|
160 |
df_fin_sort = df_fin.sort_values(by=['ЗП в вакансии'], ascending=[False]).reset_index(drop=True)
|
161 |
|
162 |
st.header('Вакансии, которые вам будут интересны')
|
163 |
st.dataframe(df_fin_sort, width=1100, height=500)
|
164 |
|
|
|
|
21 |
|
22 |
with st.sidebar:
|
23 |
sphere = st.selectbox(
|
24 |
+
"Выбери сферу:", options = list(df1['Сфера'].unique()), key=1)
|
25 |
+
st.write("Выбрано:", sphere)
|
26 |
+
|
27 |
+
job = st.selectbox(
|
28 |
+
"Выбери сферу:", options=list(df1['Профессия'].unique()), key=2)
|
29 |
+
st.write("Выбрано:", job)
|
30 |
|
31 |
# st.write(df.columns)
|
32 |
|
33 |
dohod = st.number_input(
|
34 |
+
"Введите уровень дохода",
|
35 |
+
min_value=0, # Минимальное значение
|
36 |
+
step=1, # Шаг единицы
|
37 |
+
format='%d', # Формат для целых чисел
|
38 |
+
max_value=(df1['ЗП в вакансии'].max() - 50000)
|
39 |
# ("IT", "Продажи")
|
40 |
)
|
41 |
st.write("Выбрано:", dohod)
|
42 |
|
43 |
age = st.number_input(
|
44 |
+
"Введите возраст",
|
45 |
+
min_value=0, # Минимальное значение
|
46 |
+
step=1, # Шаг единицы
|
47 |
+
format='%d' # Формат для целых чисел
|
48 |
# ("IT", "Продажи")
|
49 |
)
|
50 |
st.write("Введено:", age)
|
|
|
101 |
list_skills.append('ритейл')
|
102 |
|
103 |
|
104 |
+
def table(sphere: str, list_with_skills: list, dohod, sphere_change, gotov_uchitsia):
|
105 |
new_df = pd.merge(df1, df2, on='Навыки', how='outer')
|
106 |
if sphere_change == "Да":
|
107 |
mask_sphere = new_df['Сфера'] != 0
|
108 |
else:
|
109 |
mask_sphere = new_df['Сфера'] == sphere
|
110 |
+
try:
|
111 |
+
new_df2 = new_df[new_df['ЗП в вакансии'] >= dohod][mask_sphere]
|
112 |
+
except:
|
113 |
+
new_df2 = new_df[mask_sphere][new_df['ЗП в вакансии'] >= (dohod - 50000)]
|
114 |
+
|
115 |
new_df2['Есть_в_списке'] = new_df2['Навыки'].apply(lambda x: 1 if x in list_with_skills else 0)
|
116 |
result = new_df2.groupby(['Профессия', 'Сфера', 'ЗП в вакансии']).agg(
|
117 |
Skill=('Навыки', set),
|
|
|
124 |
def calculate_difference(row):
|
125 |
cell_set = set(row['Skill']) # Преобразуем список в набор
|
126 |
test_set = set(list_with_skills) # Преобразуем list_test в набор
|
127 |
+
return (cell_set - test_set)
|
128 |
+
|
129 |
|
130 |
result['Недостающие навыки'] = result.apply(calculate_difference, axis=1)
|
131 |
result['Требуемые навыки для позиции'] = result['Skill']
|
132 |
result['Наименования доступных курсов'] = result['Cours']
|
133 |
result['Ссылки на курс'] = result['Links']
|
134 |
|
|
|
|
|
|
|
|
|
135 |
|
136 |
+
|
|
|
|
|
|
|
137 |
|
138 |
result2 = result[['Сфера', 'Профессия', 'ЗП в вакансии', 'Требуемые навыки для позиции', 'Недостающие навыки',
|
139 |
'Наименования доступных курсов',
|
|
|
162 |
ax.set_title('Сравнение доходов')
|
163 |
ax.grid(True) # Добавление сетки
|
164 |
|
165 |
+
count_course = 3
|
166 |
# Отображение графика
|
167 |
st.pyplot(fig)
|
168 |
+
if gotov_uchitsia == "Нет":
|
169 |
+
count_course = 0
|
170 |
+
else:
|
171 |
+
count_course = 3
|
172 |
|
173 |
+
mask_len = df_fin['Недостающие навыки'].apply(lambda x: len(x) <= count_course)
|
174 |
+
df_fin = df_fin[mask_len]
|
175 |
df_fin_sort = df_fin.sort_values(by=['ЗП в вакансии'], ascending=[False]).reset_index(drop=True)
|
176 |
|
177 |
st.header('Вакансии, которые вам будут интересны')
|
178 |
st.dataframe(df_fin_sort, width=1100, height=500)
|
179 |
|
180 |
+
|