datacipen commited on
Commit
d23c725
1 Parent(s): 48d321a

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +93 -2
main.py CHANGED
@@ -184,7 +184,94 @@ async def on_action(action):
184
  ).send()
185
  await action.remove()
186
 
187
- @cl.action_callback("saveToMemory")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  async def on_action(action):
189
  buffer = cl.user_session.get("saveMemory")
190
  cl.user_session.set("saveMemory", buffer + action.value)
@@ -809,7 +896,6 @@ async def construction_FCS(romeListArray,settings):
809
 
810
  @literal_client.step(type="run")
811
  async def construction_NCS(romeListArray):
812
- print(romeListArray[0])
813
  context = await contexte(romeListArray)
814
  emploisST = cl.user_session.get("EmploiST")
815
  memory = ConversationBufferMemory(return_messages=True)
@@ -852,6 +938,11 @@ async def construction_NCS(romeListArray):
852
  )
853
  await cl.Message(author="Datapcc : 🌐🌐🌐",content="👨‍💼 Source Pôle Emploi : " + listEmplois_name, elements=text_elements).send()
854
  await cl.sleep(2)
 
 
 
 
 
855
  if romeListArray[0].find(',') != -1:
856
  codeArray = romeListArray[0].split(',')
857
  ficheMetiers = []
 
184
  ).send()
185
  await action.remove()
186
 
187
+ @cl.action_callback("datavizEmploi")
188
+ async def on_action(action):
189
+ todayDate = datetime.datetime.today()
190
+ month, year = (todayDate.month-1, todayDate.year) if todayDate.month != 1 else (12, todayDate.year-1)
191
+ start_dt = todayDate.replace(day=1, month=month, year=year)
192
+ end_dt = datetime.datetime.today()
193
+ arraydataframe = []
194
+ arrayfirstdataframe = []
195
+ arraylocalisationdataframe = []
196
+ results = []
197
+ count = 0
198
+ listrome = action.value
199
+ arrayrome = listrome.split(',')
200
+ for k in arrayrome:
201
+ params = {"motsCles": k,'minCreationDate': dt_to_str_iso(start_dt),'maxCreationDate': dt_to_str_iso(end_dt),'range':'0-149'}
202
+ search_on_big_data = client.search(params=params)
203
+ results += search_on_big_data["resultats"]
204
+ results_df = pd.DataFrame(results)
205
+ if results_df.empty == False:
206
+ count = count + 1
207
+ finals = results_df[['intitule','typeContratLibelle','experienceLibelle','competences','qualitesProfessionnelles','salaire','lieuTravail','formations']]
208
+ finals["lieuTravail"] = finals["lieuTravail"].apply(lambda x: np.array(x)).apply(lambda x: x['libelle']).apply(lambda x: x[0:3]).apply(lambda x: x.strip())
209
+ finals_df = finals
210
+ finals_df.dropna(subset=['qualitesProfessionnelles','formations','competences'], inplace=True)
211
+ finals_df["competences"] = finals_df["competences"].apply(lambda x:[str(e['libelle']) for e in x]).apply(lambda x:'; '.join(map(str, x)))
212
+ finals_df["qualitesProfessionnelles"] = finals_df["qualitesProfessionnelles"].apply(lambda x:[str(e['libelle']) + ": " + str(e['description']) for e in x]).apply(lambda x:'; '.join(map(str, x)))
213
+ finals_df["formations"] = finals_df["formations"].apply(lambda x:[str(e['niveauLibelle']) for e in x]).apply(lambda x:'; '.join(map(str, x)))
214
+ finals_df = finals_df.sort_values(by=['lieuTravail'])
215
+ finals_localisation = results_df[['lieuTravail']]
216
+ finals_localisation["lieuTravail"] = finals_localisation["lieuTravail"].apply(lambda x: np.array(x)).apply(lambda x: x['libelle']).apply(lambda x: x[0:3]).apply(lambda x: x.strip())
217
+ finals_localisation.drop(finals_localisation[finals_localisation['lieuTravail'] == 'Fra'].index, inplace = True)
218
+ finals_localisation.drop(finals_localisation[finals_localisation['lieuTravail'] == 'FRA'].index, inplace = True)
219
+ finals_localisation.drop(finals_localisation[finals_localisation['lieuTravail'] == 'Ile'].index, inplace = True)
220
+ finals_localisation.drop(finals_localisation[finals_localisation['lieuTravail'] == 'Mar'].index, inplace = True)
221
+ finals_localisation.drop(finals_localisation[finals_localisation['lieuTravail'] == 'Bou'].index, inplace = True)
222
+ finals_localisation.drop(finals_localisation[finals_localisation['lieuTravail'] == '976'].index, inplace = True)
223
+ arraylocalisationdataframe.append(finals_localisation)
224
+ arrayfirstdataframe.append(results_df)
225
+ if len(finals_df) != 0:
226
+ arraydataframe.append(finals_df)
227
+ first_df = pd.concat(arrayfirstdataframe)
228
+ finals_df = pd.concat(arraydataframe)
229
+ localisation_df = pd.concat(arraylocalisationdataframe)
230
+
231
+ ######## Emplois ########
232
+ df_intitule = first_df.groupby('intitule').size().reset_index(name='obs')
233
+ df_intitule = df_intitule.sort_values(by=['obs'])
234
+ df_intitule = df_intitule.iloc[-25:]
235
+ fig_intitule = px.bar(df_intitule, x='obs', y='intitule', width=800, height=600, orientation='h', color='obs', title="Les principaux emplois", labels={'obs':'nombre'}, color_continuous_scale="Teal", text_auto=True).update_layout(font=dict(size=10,color="RebeccaPurple"),autosize=True).update_traces(hovertemplate=df_intitule["intitule"] + ' <br>Nombre : %{x}', y=[y[:100] + "..." for y in df_intitule["intitule"]], showlegend=False)
236
+
237
+ ######## Types de contrat ########
238
+ df_contrat = first_df.groupby('typeContratLibelle').size().reset_index(name='obs')
239
+ fig_contrat = px.pie(df_contrat, names='typeContratLibelle', width=800, height=800, values='obs', color='obs', title="Les types de contrat", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe).update_traces(textposition='inside', textinfo='percent+label').update_layout(font=dict(size=10,color="RebeccaPurple"))
240
+
241
+ df_secteur = first_df.groupby('secteurActiviteLibelle').size().reset_index(name='obs')
242
+ df_secteur = df_secteur.sort_values(by=['obs'])
243
+ df_secteur = df_secteur.iloc[-25:]
244
+ fig_secteur = px.bar(df_secteur, x='obs', y='secteurActiviteLibelle', width=800, height=600, orientation='h', color='obs', title="Les principaux secteurs d'activités", labels={'obs':'nombre'}, color_continuous_scale="Teal", text_auto=True).update_layout(font=dict(size=10,color="RebeccaPurple"),autosize=True).update_traces(hovertemplate=df_secteur["secteurActiviteLibelle"] + ' <br>Nombre : %{x}', y=[y[:100] + "..." for y in df_secteur["secteurActiviteLibelle"]], showlegend=False)
245
+
246
+ ######## Compétences professionnelles ########
247
+ df1 = finals_df
248
+ df1['competences'] = finals_df['competences'].str.split(';')
249
+ df2 = df1.explode('competences')
250
+ df2 = df2.groupby('competences').size().reset_index(name='obs')
251
+ df2 = df2.sort_values(by=['obs'])
252
+ df2 = df2.iloc[-20:]
253
+ fig_competences = px.bar(df2, x='obs', y='competences', width=800, height=550, orientation='h', color='obs', title="Les principales compétences professionnelles", labels={'obs':'nombre'}, color_continuous_scale="Teal", text_auto=True).update_layout(font=dict(size=10,color="RebeccaPurple"),autosize=True).update_traces(hovertemplate=df2["competences"] + ' <br>Nombre : %{x}', y=[y[:100] + "..." for y in df2['competences']], showlegend=False)
254
+
255
+ ######## Compétences transversales ########
256
+ df_transversales = finals_df
257
+ df_transversales['qualitesProfessionnelles'] = finals_df['qualitesProfessionnelles'].str.split(';')
258
+ df_comptransversales = df_transversales.explode('qualitesProfessionnelles')
259
+ df_comptransversales = df_comptransversales.groupby('qualitesProfessionnelles').size().reset_index(name='obs')
260
+ df_comptransversales = df_comptransversales.sort_values(by=['obs'])
261
+ df_comptransversales = df_comptransversales.iloc[-20:]
262
+ fig_transversales = px.bar(df_comptransversales, x='obs', y='qualitesProfessionnelles', width=800, height=550, orientation='h', color='obs', title="Les principales compétences transversales", labels={'obs':'nombre'}, color_continuous_scale="Teal", text_auto=True).update_layout(font=dict(size=10,color="RebeccaPurple"),autosize=True).update_traces(hovertemplate=df_comptransversales["qualitesProfessionnelles"] + ' <br>Nombre : %{x}', y=[y[:100] + "..." for y in df_comptransversales["qualitesProfessionnelles"]], showlegend=False)
263
+
264
+ ######## Niveaux de qualification ########
265
+ df_formations = finals_df.groupby('formations').size().reset_index(name='obs')
266
+ fig_formations = px.pie(df_formations, names='formations', width=800, height=800, values='obs', color='obs', title="Les niveaux de qualification", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe).update_traces(textposition='inside', textinfo='percent+label').update_layout(font=dict(size=10,color="RebeccaPurple"))
267
+
268
+ ######## Expériences professionnelles ########
269
+ df_experience = finals_df.groupby('experienceLibelle').size().reset_index(name='obs')
270
+ fig_experience = px.pie(df_experience, names='experienceLibelle', width=800, height=800, values='obs', color='obs', title="Les expériences professionnelles", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe).update_traces(textposition='inside', textinfo='percent+label').update_layout(font=dict(size=10,color="RebeccaPurple"))
271
+
272
+ await action.remove()
273
+
274
+ @cl.action_callback("saveMemory")
275
  async def on_action(action):
276
  buffer = cl.user_session.get("saveMemory")
277
  cl.user_session.set("saveMemory", buffer + action.value)
 
896
 
897
  @literal_client.step(type="run")
898
  async def construction_NCS(romeListArray):
 
899
  context = await contexte(romeListArray)
900
  emploisST = cl.user_session.get("EmploiST")
901
  memory = ConversationBufferMemory(return_messages=True)
 
938
  )
939
  await cl.Message(author="Datapcc : 🌐🌐🌐",content="👨‍💼 Source Pôle Emploi : " + listEmplois_name, elements=text_elements).send()
940
  await cl.sleep(2)
941
+ datavizEmploi = [
942
+ cl.Action(name="datavizEmploi", value=romeListArray[0], description="Afficher la datavisualisation du marché de l'emploi")
943
+ ]
944
+ await cl.Message(author="Datapcc : 🌐🌐🌐",content="📊 Afficher la datavisualisation du marché de l'emploi", actions=datavizEmploi).send()
945
+ await cl.sleep(2)
946
  if romeListArray[0].find(',') != -1:
947
  codeArray = romeListArray[0].split(',')
948
  ficheMetiers = []