MotoPanda commited on
Commit
34c6aac
·
verified ·
1 Parent(s): 6e8fc39

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +179 -0
app.py ADDED
@@ -0,0 +1,179 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import numpy as np
4
+ import json
5
+ import random
6
+ import matplotlib.pyplot as plt
7
+ st.title('Каталог профессий IT и Продажи')
8
+
9
+ st.sidebar.title('Выбор параметров для подбора вакансий')
10
+
11
+ with open('main_table.json', 'r') as json_file:
12
+ data_main = json.load(json_file)
13
+ df1 = pd.DataFrame(data_main)
14
+
15
+ with open('dop_table.json', 'r') as json_file:
16
+ data_dop = json.load(json_file)
17
+ df2= pd.DataFrame(data_dop)
18
+
19
+ dohod = 0
20
+ i = 0
21
+
22
+ with 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+=1
64
+ 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
+
87
+ def 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['Сфера'] != 0
91
+ else:
92
+ mask_sphere = new_df['Сфера'] == sphere
93
+ 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 =result
122
+
123
+ result2 = result[['Сфера', 'Профессия', 'ЗП в вакансии', 'Требуемые навыки для позиции', 'Недостающие навыки',
124
+ 'Наименования доступных курсов',
125
+ 'Ссылки на курс']]
126
+ return result2
127
+
128
+
129
+ df_fin = table(sphere, list_skills, dohod, sphere_change, gotov_uchitsia)
130
+
131
+ st.header('Рост Вашего дохода')
132
+ labels = ['Доход сейчас', 'Доход через год', 'Доход через 2 го��а']
133
+ values = [dohod, dohod*1.1, dohod*1.2]
134
+ fig, ax = plt.subplots()
135
+
136
+ # fig.set_size_inches(10, 5)
137
+ ax.bar(labels, values)
138
+ # , color = ['blue', 'orange', 'green'])
139
+ ax.set_ylabel('Сумма, руб')
140
+ ax.set_title('Сравнение доходов')
141
+ st.pyplot(fig)
142
+
143
+ st.header('Вакансии, которые вам будут интересны')
144
+ st.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['Сфера '] == sphere
152
+ #
153
+ # if sphere_change == "Да":
154
+ # mask_sphere = df1['Сфера '] != 0
155
+ #
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=True
168
+ # )
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)