Spaces:
Sleeping
Sleeping
#### function to show map for loaction of the job | |
import time | |
import matplotlib.pyplot as plt | |
import streamlit as st | |
import seaborn as sns | |
import matplotlib as mpl | |
import plotly | |
import plotly.express as px | |
import plotly.graph_objs as go | |
import plotly.offline as py | |
from plotly.offline import iplot | |
from plotly.subplots import make_subplots | |
import plotly.figure_factory as ff | |
import pandas as pd | |
def map_bubble(df): | |
import requests | |
import urllib.parse | |
g =[] | |
for i in range(len(df.Location)): | |
if df.Location.loc[i].split(","): | |
g.append(df.Location.loc[i].split(",")[0]) | |
else: | |
g.append(df.Location.loc[i]) | |
df['new_loc']=g | |
if 'country' in df.columns: | |
df["full_location"] = df["new_loc"] + ", " +df["country"] | |
dict_cities = dict(df.full_location.value_counts()) | |
else : | |
dict_cities = dict(df.new_loc.value_counts()) | |
lat = [] | |
lon = [] | |
bubble_df = pd.DataFrame() | |
add=[] | |
val=[] | |
try: | |
for address in dict_cities.keys(): | |
url = 'https://nominatim.openstreetmap.org/search/' + urllib.parse.quote(address) +'?format=json' | |
response = requests.get(url).json() | |
lat.append(response[0]["lat"]) | |
lon.append(response[0]["lon"]) | |
add.append(address) | |
val.append(dict_cities[address]) | |
except: | |
pass | |
bubble_df['address'] =add | |
bubble_df['lat'] = lat | |
bubble_df['lon'] = lon | |
bubble_df['value'] = val | |
# import the library | |
import folium | |
# Make an empty map | |
m = folium.Map(location=[20,0], tiles="OpenStreetMap", zoom_start=2) | |
# add marker one by one on the map | |
for i in range(0,len(bubble_df)): | |
folium.Circle( | |
location=[bubble_df.iloc[i]['lat'], bubble_df.iloc[i]['lon']], | |
popup=bubble_df.iloc[i][['address','value']].values, | |
radius=float(bubble_df.iloc[i]['value'])*500, | |
color='#69b3a2', | |
fill=True, | |
fill_color='#69b3a2' | |
).add_to(m) | |
m | |
# Show the map again | |
return m | |
########################## | |
######################### | |
#### wuzzuf analysis | |
def wuzzuf_exp(df1): | |
top10_job_title = df1['Title'].value_counts()[:10] | |
fig1 = px.bar(y=top10_job_title.values, | |
x=top10_job_title.index, | |
color = top10_job_title.index, | |
color_discrete_sequence=px.colors.sequential.deep, | |
text=top10_job_title.values, | |
title= 'Top 10 Job Titles', | |
template= 'plotly_dark') | |
fig1.update_layout(height=500,width=500, | |
xaxis_title="Job Titles", | |
yaxis_title="count", | |
font = dict(size=17,family="Franklin Gothic")) | |
st.plotly_chart(fig1) | |
type_grouped = df1['Career_Level'].value_counts() | |
#e_type = ['Full-Time','Part-Time','Contract','Freelance'] | |
e_type =dict(df1['Career_Level'].value_counts()).keys() | |
fig2 = px.bar(x = e_type, y = type_grouped.values, | |
color = type_grouped.index, | |
color_discrete_sequence=px.colors.sequential.dense, | |
template = 'plotly_dark', | |
text = type_grouped.values, title = 'Career Level Distribution') | |
fig2.update_layout( height=500, width=500, | |
xaxis_title="Career Level", | |
yaxis_title="count", | |
font = dict(size=17,family="Franklin Gothic")) | |
fig2.update_traces(width=0.5) | |
st.plotly_chart(fig2) | |
residence = df1['Location'].value_counts() | |
top10_employee_location = residence[:10] | |
fig3 = px.bar(y=top10_employee_location.values, | |
x=top10_employee_location.index, | |
color = top10_employee_location.index, | |
color_discrete_sequence=px.colors.sequential.deep, | |
text=top10_employee_location.values, | |
title= 'Top 10 Location of job', | |
template= 'plotly_dark') | |
fig3.update_layout(height=500,width=500, | |
xaxis_title="Location of job", | |
yaxis_title="count", | |
font = dict(size=17,family="Franklin Gothic")) | |
st.plotly_chart(fig3) | |
type_grouped = df1['Experience_Needed'].value_counts() | |
#e_type = ['Full-Time','Part-Time','Contract','Freelance'] | |
e_type =dict(df1['Experience_Needed'].value_counts()).keys() | |
fig4 = px.bar(x = e_type, y = type_grouped.values, | |
color = type_grouped.index, | |
color_discrete_sequence=px.colors.sequential.dense, | |
template = 'plotly_dark', | |
text = type_grouped.values, title = ' Experience Level Distribution') | |
fig4.update_layout(height=500,width=500, | |
xaxis_title=" Experience Level (years)", | |
yaxis_title="count", | |
font = dict(size=17,family="Franklin Gothic")) | |
fig4.update_traces(width=0.5) | |
st.plotly_chart(fig4) | |
return | |
######################### | |
### linkedin analysis | |
def linkedin_exp(df1): | |
top10_job_title = df1['Title'].value_counts()[:10] | |
fig1 = px.bar(y=top10_job_title.values, | |
x=top10_job_title.index, | |
color = top10_job_title.index, | |
color_discrete_sequence=px.colors.sequential.deep, | |
text=top10_job_title.values, | |
title= 'Top 10 Job Titles', | |
template= 'plotly_dark') | |
fig1.update_layout(height=500,width=500, | |
xaxis_title="Job Titles", | |
yaxis_title="count", | |
font = dict(size=17,family="Franklin Gothic")) | |
st.plotly_chart(fig1) | |
type_grouped = df1['Employment type'].value_counts() | |
#e_type = ['Full-Time','Part-Time','Contract','Freelance'] | |
e_type =dict(df1['Employment type'].value_counts()).keys() | |
fig2 = px.bar(x = e_type, y = type_grouped.values, | |
color = type_grouped.index, | |
color_discrete_sequence=px.colors.sequential.dense, | |
template = 'plotly_dark', | |
text = type_grouped.values, title = 'Employment type Distribution') | |
fig2.update_layout( height=500, width=500, | |
xaxis_title="Employment type", | |
yaxis_title="count", | |
font = dict(size=17,family="Franklin Gothic")) | |
fig2.update_traces(width=0.5) | |
st.plotly_chart(fig2) | |
residence = df1['Location'].value_counts() | |
top10_employee_location = residence[:10] | |
fig3 = px.bar(y=top10_employee_location.values, | |
x=top10_employee_location.index, | |
color = top10_employee_location.index, | |
color_discrete_sequence=px.colors.sequential.deep, | |
text=top10_employee_location.values, | |
title= 'Top 10 Location of job', | |
template= 'plotly_dark') | |
fig3.update_layout(height=500,width=500, | |
xaxis_title="Location of job", | |
yaxis_title="count", | |
font = dict(size=17,family="Franklin Gothic")) | |
st.plotly_chart(fig3) | |
type_grouped = df1['Seniority level'].value_counts() | |
#e_type = ['Full-Time','Part-Time','Contract','Freelance'] | |
e_type =dict(df1['Seniority level'].value_counts()).keys() | |
fig4 = px.bar(x = e_type, y = type_grouped.values, | |
color = type_grouped.index, | |
color_discrete_sequence=px.colors.sequential.dense, | |
template = 'plotly_dark', | |
text = type_grouped.values, title = 'Seniority level Distribution') | |
fig4.update_layout(height=500,width=500, | |
xaxis_title="Seniority level", | |
yaxis_title="count", | |
font = dict(size=17,family="Franklin Gothic")) | |
fig4.update_traces(width=0.5) | |
st.plotly_chart(fig4) | |
return | |