File size: 4,928 Bytes
def27a0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
687dc0b
def27a0
 
 
 
 
 
687dc0b
def27a0
 
687dc0b
def27a0
 
687dc0b
def27a0
687dc0b
 
def27a0
 
 
 
 
 
687dc0b
 
 
 
 
 
 
def27a0
 
 
687dc0b
def27a0
 
687dc0b
def27a0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
687dc0b
 
def27a0
 
 
 
687dc0b
def27a0
 
 
 
687dc0b
def27a0
 
 
 
687dc0b
def27a0
 
 
687dc0b
 
def27a0
 
 
 
 
 
 
687dc0b
def27a0
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import streamlit as st
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import plotly.express as px
from PIL import Image
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
from wordcloud import STOPWORDS

st.set_page_config(
    page_title='Công cụ ước tính lương nghề khoa học dữ liệu'
)


def run():
    # Membuat Title
    st.title('Công cụ ước tính lương nghề khoa học dữ liệu')

    # Sub header


    # Insert Gambar 
    image = Image.open('gaji.jpg')
    st.image(image, caption='Lương', use_column_width=True)

    # description
    st.markdown('## Mục tiêu của công cụ ước tính lương')
    st.write(
        'Với tư cách là một nhà khoa học dữ liệu, tôi muốn biết liệu tôi có nhận được mức lương xứng đáng từ công ty hay không, vì vậy tôi đã tạo ra mô hình học máy này để dự đoán mức lương cho các công việc trong thế giới dữ liệu.')
    st.write('Công cụ ước tính lương này có thể giúp các bạn biết liệu mình có nhận được mức lương xứng đáng hay không.')
    st.markdown('---')

    st.markdown('## Mô tả')
    st.write('Cấp độ kinh nghiệm')
    st.markdown(
        '- Entry-level: người mới ra trường họặc ít năm kinh nghiệm.\n- Mid-level: vị trí có một mức độ kinh nghiệm và chuyên môn nhất định, vượt qua cấp độ mới vào nghề (Entry-level) nhưng chưa đạt đến cấp độ cao cấp (Senior-level).\n- Senior-level: vị trí có mức độ kinh nghiệm, chuyên môn và thẩm quyền cao.\n- Executive-level: cấp điều hành.')


    st.markdown('---')

    # show dataframe
    data = pd.read_csv('DataScienceSalaries.csv')
    map_ex = {'SE': 'Senior-level', 'MI': 'Mid-level', 'EN': 'Entry-level', 'EX': 'Executive-level'}
    map_type = {'FT': 'Toàn thời gian', 'PT': 'Bán thời gian', 'CT': 'Hợp đồng', 'FL': 'Tự do'}
    map_size = {'S': 'Nhỏ', 'M': 'Vừa', 'L': 'Lớn'}
    data['experience_level'] = data['experience_level'].map(map_ex)
    data['employment_type'] = data['employment_type'].map(map_type)
    data['company_size'] = data['company_size'].map(map_size)

    st.dataframe(data)

    # membuat histogram salary
    st.write('### Biểu đồ lương bằng USD')
    fig = plt.figure(figsize=(10, 5), dpi=150)
    sns.histplot(data['salary_in_usd'], kde=True, bins=40)
    plt.xlabel('Lương bằng USD', fontsize=15)
    plt.ylabel('Số lượng', fontsize=15)
    st.pyplot(fig)

    # membuat pie chart experience
    st.write('### Biểu đồ phân phối cấp độ kinh nghiệm')
    exp = data.experience_level.value_counts()

    def make_autopct(values):
        def my_autopct(pct):
            total = sum(values)
            val = int(round(pct * total / 100.0))
            return '{p:.2f}%  ({v:d})'.format(p=pct, v=val)

        return my_autopct

    fig = plt.figure(figsize=(5, 5), dpi=150)
    exp.plot.pie(autopct=make_autopct(exp))
    st.pyplot(fig)

    # barchart posisi dengan gaji terbesar
    st.write('### 5 Vị trí có mức lương cao nhất')
    work_rate = data.groupby(['job_title'])['salary_in_usd'].mean()
    work = work_rate.nlargest(5)
    fig = plt.figure(figsize=(15, 5), dpi=150)
    work.plot(kind="bar")
    plt.xlabel('Tên vị trí', fontsize=15)
    plt.xticks(rotation=45, fontsize=15)
    plt.ylabel('Lương bằng USD', fontsize=15)
    st.pyplot(fig)

    # negara dengan gaji tertinggi
    st.write('### 5 Quốc gia có mức lương cao nhất')
    location_payrate = data.groupby(['company_location'])['salary_in_usd'].mean()
    lar = location_payrate.nlargest(5)
    fig = plt.figure(figsize=(15, 8), dpi=150)
    lar.plot(kind="bar")
    plt.xlabel('Tên quốc gia', fontsize=15)
    plt.xticks(rotation=0, fontsize=15)
    plt.ylabel('Lương bằng usd', fontsize=15)
    st.pyplot(fig)

    # popular job
    st.write('### Top 10 công việc được tuyển dụng nhiều nhất')
    job = data.groupby(['job_title'])['job_title'].count()
    top_job = job.nlargest(10)
    fig = plt.figure(figsize=(12, 12), dpi=150)
    plt.xticks(rotation=0, fontsize = 15)
    plt.yticks(fontsize = 15)
    plt.ylabel('Tên công việc', fontsize=15)
    plt.xlabel('Số lượng', fontsize=15)
    sns.barplot(y=top_job.index, x=top_job.values)
    st.pyplot(fig)

    # wordcloud
    # see most job with word cloud
    st.write('### Word-cloud các từ được nhắc tới nhiều nhất')
    text = " ".join(i for i in data.job_title)
    stopwords = set(STOPWORDS)
    wordcloud = WordCloud(width=1600, height=800).generate(text)
    fig = plt.figure(figsize=(15, 10), facecolor='k')
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.axis("off")
    st.pyplot(fig)


if __name__ == '__main__':
    run()