MotoPanda commited on
Commit
e234c0f
·
verified ·
1 Parent(s): 41ba5eb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +99 -33
app.py CHANGED
@@ -3,32 +3,25 @@ import pandas as pd
3
  import numpy as np
4
  import json
5
  import random
 
6
  st.title('Каталог профессий IT и Продажи')
7
 
8
  st.sidebar.title('Выбор параметров для подбора вакансий')
 
9
  with open('main_table.json', 'r') as json_file:
10
  data_main = json.load(json_file)
11
- df = pd.DataFrame(data_main)
12
- # st.sidebar.write(df.columns)
13
  with open('dop_table.json', 'r') as json_file:
14
  data_dop = json.load(json_file)
 
15
 
16
- df = pd.DataFrame(data_main)
17
- df_dop = pd.DataFrame(data_dop)
18
-
19
- with open('list1.json', 'r') as json_file:
20
- table1 = json.load(json_file)
21
-
22
- df1 = pd.DataFrame(table1)
23
-
24
- # df = df[['Сфера ', 'Профессия ', 'ЗП в вакансии', 'Навыки ']]
25
- # df = pd.DataFrame(columns=['Сфера', 'Профессия', 'ЗП Вакансии', 'Навыки', 'Недостающие навыки'])
26
  dohod = 0
27
  i = 0
28
- # while True:
29
  with st.sidebar:
30
  sphere = st.selectbox(
31
- "Выбери сферу:", options = list(df['Сфера '].unique()), key=i)
32
  # st.write("Выбрано:", sphere)
33
 
34
  # st.write(df.columns)
@@ -62,7 +55,7 @@ with st.sidebar:
62
  html = st.checkbox("HTML", key=f"{i+1}mlrw")
63
  java = st.checkbox("Java", key=f"{i+1}mlre")
64
  figma = st.checkbox("Figma", key=f"{i+1}mlrr")
65
- power_bi = st.checkbox("Bower BI", key=f"{i+1}mlrt")
66
  prodaji = st.checkbox("Продажи", key=f"{i+1}mlry")
67
  analys_prodaj = st.checkbox("Анализ продаж", key=f"{i+1}mlru")
68
  work_with_clients = st.checkbox("Работа с клиентами", key=f"{i+1}mlri")
@@ -72,9 +65,9 @@ with st.sidebar:
72
  list_skills=[]
73
  if but:
74
  if python:
75
- list_skills.append(' Python')
76
  if sql:
77
- list_skills.append(' SQL')
78
  if html:
79
  list_skills.append('HTML')
80
  if java:
@@ -90,24 +83,97 @@ with st.sidebar:
90
  if riteil:
91
  list_skills.append('ритейл')
92
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  # st.write(but)
94
  # st.write(python)
95
  # st.write(html)
96
  # st.write(sphere_change)
97
  # st.write(gotov_uchitsia)
98
- mask_sphere = df1['Сфера '] == sphere
99
-
100
- if sphere_change == "Да":
101
- mask_sphere = df1['Сфера '] != 0
102
-
103
- st.header('Вакансии, которые вам будут интересны')
104
- df1 = df1[mask_sphere][df1['ЗП в вакансии'] >= dohod]
105
- df1 = df1[['Сфера ', 'Профессия ', 'ЗП в вакансии', 'Навыки ']]
106
- st.dataframe(df1, width=1100, height=300)
107
-
108
- st.header('Возможности обучения')
109
-
110
- df2 = df[df['Сфера '] == sphere][df['ЗП в вакансии'] >= dohod][~df['Навыки '].isin(list_skills)]
111
- df2 = pd.merge(df2, df_dop, on='Навыки ', how='left').dropna()
112
- st.dataframe(df2, width=1100, height=1000)
113
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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)
 
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")
 
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:
 
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)