import json import streamlit as st from streamlit_lottie import st_lottie from PIL import Image #import pandas as pd def app(): #st.set_page_config(page_title="Visualizations and Results", page_icon=":flag_ghana:", layout="wide") # ---- LOAD ASSETS ---- img_job_cat_jobs = Image.open("./visualizations/5.jpg") img_job_cat_app = Image.open("./visualizations/6.jpg") img_seniority_level_jobs = Image.open("./visualizations/9.jpg") img_experience_level_jobs = Image.open("./visualizations/8.jpg") img_education_level_jobs = Image.open("./visualizations/7.jpg") img_skills_match_level = Image.open("./visualizations/10.jpg") img_skills_academy_comparison = Image.open("./visualizations/11_str.png") img_skills_academy_industry_comparison = Image.open("./visualizations/12_str.png") lottie_animation = ("visualizations/lottie_animation.json") # Use local CSS def local_css(file_name): with open(file_name) as f: st.markdown(f"", unsafe_allow_html=True) local_css("style/style.css") # ---- HEADER SECTION ---- with st.container(): st.subheader("Visualizations and Results") text_col, lottie_col = st.columns(([0.6, 0.4]), gap="large") with text_col: st.write( """ By leveraging the power of natural language processing techniques, we have gained invaluable insights into the factors contributing to the growing gap between job demands and the skills available in today's Ghanaian labor market. Through this section, we aim to highlight the key discoveries, trends, and patterns uncovered during our analysis, shedding light on the complex dynamics of this issue and offering potential avenues for bridging the divide. """ ) with lottie_col: with open(lottie_animation,"r") as file: url = json.load(file) st_lottie(url, reverse=True, height=200, width=200, speed=1, loop=True, quality='high', key='Results' ) tab1, tab2 = st.tabs(["EDA", "Gap-img"]) # ---- TAB 1 ---- with tab1: st.header("Jobs and Job Applicants") with st.container(): st.write("---") st.subheader("Available Jobs Categories") st.write("##") app_column, jobs_column = st.columns(2) with app_column: st.image(img_job_cat_app) expander = st.expander("See explanation") expander.write('''The diagram above illustrates the distribution of job applicants by job category. The demand for jobs is highest in the IT, Finance, and Health categories, which are similarly the categories with the most job seekers. Other job categories with available positions include Tourism and Hospitality, Management and Secretarial Services, and Logistics and Transport.''') with jobs_column: st.image(img_job_cat_jobs) expander = st.expander("See explanation") expander.write('''The diagram above displays the distribution of available jobs across different categories. The majority of available jobs fall under the following categories: Engineering, Finance, IT, Management, and Health. Other categories are not as well represented on online job portals.''') with st.container(): st.write("---") st.subheader("Experience and Seniority Levels") st.write("##") app_column, jobs_column = st.columns(2) with app_column: st.image(img_seniority_level_jobs) expander = st.expander("See explanation") expander.write('''The above chart depicts the distribution of available jobs’ seniority levels. As expected, most of the jobs are entry-level jobs. Mid-Senior and Senior level positions represent the second and third biggest categories. The internships compose less than two per cent of jobs, making it harder for penultimate students to gain the necessary experience and enter the job market.''') with jobs_column: st.image(img_experience_level_jobs) expander = st.expander("See explanation") expander.write('''The diagram above illustrates the experience level (in years) employers typically require for available positions. The majority of jobs (a significant percentage) require 2 to 5 years of experience, while an additional third of positions demand 5 to 10 years of experience. Some employers mandate more than 10 years of experience for specific roles. A mere 3 percent of available jobs are open to employees with less than 2 years of experience. This leaves new graduates with limited job opportunities and forces them to expend additional effort to secure their first job.''') with st.container(): st.write("---") st.subheader("Education level of job seekers and employers") st.write("##") st.image(img_education_level_jobs) expander = st.expander("See explanation") expander.write('''The graph above displays a comparison between the level of education that job providers require and the level of education held by job seekers. The number of job seekers with Bachelor's degrees is twice the number of employers requiring this level of education. This trend is also evident for job seekers with Master's degrees and Doctorates. Employers rarely require college diplomas, but approximately a quarter of job seekers mention holding them on their resumes. High school certificates and Technical and Vocational diplomas are not required by employers, but job seekers tend to list them on their resumes.''') with tab2: st.header("Gap Analysis") st.write("##") with st.container(): st.write('''The following charts depict the skills gap between the top five universities in Ghana and the industry. As a case study, we selected Computer Science programs at each university. We then compared the taught skills to the top 1000 skills required in the IT jobs market.''') st.write("---") st.subheader("Skills match level of the top five universities in Ghana to IT industry requirements") st.write("##") st.image(img_skills_match_level) expander = st.expander("See explanation") expander.write('''Based on the chart provided, it appears that the educational curriculums being taught are not meeting the needs of the job market. Even the most closely aligned program from the University of Mines and Technology is lacking in nearly 50% of the necessary skills. The Bachelor of Science program in Computer Science from KNUST university has the least amount of required skills covered, with less than 10% matching up.''') with st.container(): st.write("---") st.subheader("Skills comparison between the top five universities in Ghana for IT programs") st.write("##") st.image(img_skills_academy_comparison) expander = st.expander("See explanation") expander.write('''The visualization above illustrates the comparison of the 25 most commonly taught skills among various universities. The University of Mines and Technology has the most comprehensive curriculum, followed by the University of Ghana. As demonstrated in the previous graph, KNUST University has the least favourable outcomes regarding available skills. While subjects such as Math, Operating Systems, and Software Engineering are included in every curriculum, not all universities offer courses in Embedded Systems, Robotics, Artificial Intelligence, and Networking. Therefore, students who are interested in these areas of study should carefully plan their enrollment accordingly.''') st.write("---") st.subheader("Skills gap between the top five universities in Ghana and IT jobs market") st.write("##") st.image(img_skills_academy_industry_comparison) expander = st.expander("See explanation") expander.write('''The chart above displays the discrepancy between the skills taught in university curriculums and those required by the IT job market. The analysis focuses on the top 20 skills in demand. Among these skills, Operating Systems is the only one taught in all five universities, with Computer Science and Software Engineering following closely behind. Project Management ranks as the second most sought-after skill in the IT industry, but only the Ghana Institute of Management offers it as a course for Computer Science students. Additionally, risk management, a crucial component of project management, is not currently included in any Ghanaian university curriculum, which differs from the standards in the United States, where most CS programs cover these topics. Web development skills, including HTML and CSS, are also highly valued in the job market but are rarely included in university programs, if at all.''') ''' with tab3: st.header("Gap - interactive") st.write("##") #read data uni_skills = pd.read_csv("data/univercities_skills_comparison.csv") uni_ind_skills = pd.read_csv("data/univercities_industry_skills_comparison.csv") with st.container(): '''