File size: 6,780 Bytes
7d5750e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b6b8e9b
7d5750e
 
 
 
 
5306baa
7d5750e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c4632f3
aca0a3b
7d5750e
 
 
 
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 libraries
import pandas as pd
import numpy as np
import streamlit as st
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px

def run():
    #introduction
    st.title("Exploratory Data Analysis of Student Performance")
    #konsep markdown
    st.write('This page containts Exploratory Data Analysis of Student Performance based on previous model')
    st.write('---')

    #memasukan gambar
    link_gambar = 'https://tse4.mm.bing.net/th?id=OIP.2z-TeTNwM-ATHuzdStRADgHaDt&pid=Api&P=0&h=220'
    st.image(link_gambar, caption='source:google.com', use_container_width=True)

    #menampilkan dataframe
    st.write('## Dataframe')

    teams = pd.read_csv('StudentPerformanceFactors.csv')
    st.dataframe(teams.head())

    st.write('''
            Indonesia menduduki peringkat 68 dari 81 negara di dunia dalam kemampuan matematika yang erat hubungannya dengan kemampuan bernalar.
            Hal ini cukup mengkhawatirkan karena Indonesia sendiri digadang-gadang akan memiliki bonus demografi di tahun 2045 di mana 
            jumlah penduduk yang berusia muda akan lebih banyak dari jumlah penduduk yang berusia senja. Generasi muda  akan mulai mengambil alih kendali 
            atas negeri ini yang mana akan sangat berbahaya apabila generasi penerus tidak memiliki kemampuan bernalar yang mumpuni. Sebagai tambahan, 
            tidak seimbangnya kemampuan bernalar dengan kebutuhan industri di masa depan akan menyebabkan lebih banyak pengangguran yang akan membebani ekonomi 
            baik bagi negara maupun bagi individu itu sendiri. Program yang akan dibuat ini akan membantu untuk memprediksi performa matematika seorang pelajar yang 
            dinyatakan dalam skor berdasarkan beberapa faktor diantaranya latar belakang keluarga, pengaruh teman sejawat, jarak antara rumah dan sekolah, serta fasilitas 
            pendukung proses belajar anak seperti diadakannya kegiatan ektrakurikuler. 
            - Bagi orang tua, program ini bisa dijadikan acuan untuk pertimbangan memilih sekolah dan acuan untuk lebih memperhatikan fasilitas dan dukungan mental yang dapat meningkatkan performa anak-anaknya. 
            - Bagi pelajar, program ini bisa dijadikan acuan untuk menjaga diri dari hal-hal yang mungkin dapat berpengaruh terhadap performanya di sekolah, khususnya di bidang matematika. 
            ''')

    #sub bab visualisasi

    st.write('### Persentase Jarak Rumah ke Sekolah')
    percentage = teams['Distance_from_Home'].value_counts(normalize=True) * 100

   
    fig, ax = plt.subplots(figsize=(6, 6))
    ax.pie(percentage, labels=percentage.index, autopct='%1.1f%%', startangle=90,
        colors=['#66c2a5', '#fc8d62', '#8da0cb'])

    ax.set_title('Percentage of Home-to-School Distance')
    ax.set_ylabel('')  

    
    st.pyplot(fig)


    st.write('**Insight:**')
    st.write('Sebanyak 10.1% orang tua memilih menyekolahkan anaknya di sekolah yang jauh dan sebanyak 30.6% memilih sekolah yang tidak terlalu jauh maupun tidak terlalu dekat dengan rumah. Hal ini bisa jadi karena faktor kualitas sekolah menjadi hal utama dalam pengambilan keputusan')

    # Visualisasi menggunakan boxplot
    st.write('### Distribusi Performa Anak Berdasarkan Keterlibatan Orang Tua')
    plt.figure(figsize=(8, 6))
    sns.boxplot(x='Parental_Involvement', y='Exam_Score', data=teams, palette='Set2')
    plt.title('Distribusi Skor Ujian Berdasarkan Keterlibatan Orang Tua', fontsize=16)
    plt.xlabel('Tingkat Keterlibatan Orang Tua', fontsize=12)
    plt.ylabel('Skor Ujian', fontsize=12)
    st.pyplot(plt)
    st.write('**Insight:**')
    st.write('Dari analisa di atas, dapat disimpulkan bahwa semakin tinggi keterlibatan orang tua, semakin tinggi performa anak di sekolah. Artinya antara keterlibatan orang tua dengan performa anak memiliki korelasi yang positif. Keterlibatan yang dimaksud adalah berupa pemberian dukungan mental dan fasilitas yang menunjang performa anak')

    #dynamic hystogram
    st.write('### Distribusi Data')

    opsi=st.selectbox('Pilih Data:',
                    ('Hours_Studied', 'Attendance', 'Parental_Involvement',
        'Access_to_Resources', 'Extracurricular_Activities', 'Sleep_Hours',
        'Previous_Scores', 'Motivation_Level', 'Tutoring_Sessions',
        'Family_Income', 'Teacher_Quality', 'School_Type', 'Peer_Influence',
        'Physical_Activity', 'Learning_Disabilities',
        'Parental_Education_Level', 'Distance_from_Home'))

    fig = plt.figure(figsize=(8,5))
    sns.histplot(teams[opsi], bins=20, kde=True)
    st.pyplot(fig)

    #latar belakang ekonomi terhadap motivasi anak
    st.write('### Latar Belakang Ekonomi Keluarga terhadap Motivasi Anak')
    # Membuat Tabel Kontingensi
    contingency_table = pd.crosstab(teams['Family_Income'], teams['Motivation_Level'])
    # Membuat Heatmap
    figure = plt.figure(figsize=(8, 6))
    sns.heatmap(contingency_table, annot=True, fmt="d", cmap="Blues", cbar=False)
    plt.title("Distribusi Motivasi Berdasarkan Latar Belakang Ekonomi Keluarga")
    plt.ylabel("Latar Belakang Ekonomi")
    plt.xlabel("Motivasi Anak")
    st.pyplot(figure)
    st.write('**Insight:**')
    st.write('Dari hasil di atas dapat motivasi belajar yang tinggi cenderung didorong dari latar belakang ekonomi yang medium. Sedangkan motivasi belajar yang rendah cenderung didapati dari anak-anak yang memiliki latar belakang ekonomi yang rendah')

    #Kualitas pengajar terhadap tipe sekolah
    st.write('### Kualitas Pengajar Berdasarkan Tipe Sekolah')
    # Membuat figure untuk visualisasi
    gambar=plt.figure(figsize=(10, 6))
    # Grouping data berdasarkan Tipe Sekolah dan Kualitas Pengajar
    grouped = teams.groupby(['School_Type', 'Teacher_Quality']).size().unstack()
    # Menampilkan pie chart untuk setiap Tipe Sekolah
    for i, school_type in enumerate(grouped.index):
        plt.subplot(1, len(grouped.index), i+1)  # Menentukan jumlah subplots berdasarkan jumlah Tipe Sekolah
        data = grouped.loc[school_type]  # Data untuk tipe sekolah tertentu
        data.plot(kind='pie', autopct='%1.1f%%', legend=False)
        plt.title(f'Tipe Sekolah: {school_type}')
    # Menambahkan judul umum
    plt.suptitle('Distribusi Kualitas Pengajar Berdasarkan Tipe Sekolah')
    # Menampilkan plot
    plt.tight_layout()
    st.pyplot(gambar)
    st.write('**Insight:**')
    st.write('Dari hasil uji di atas dapat dilihat bahwa sekolah swasta lebih banyak memiliki kualitas pengajar yang tinggi dibandingkan sekolah negeri. Hal ini bisa menjadi acuan bagi para orang tua terutama untuk pendidikan dasar')

    link_gambar = 'https://tse1.mm.bing.net/th?id=OIP.L0QriE9s9rT43YdhQX5JggHaE8&pid=Api&P=0&h=220'
    st.image(link_gambar, use_container_width=True)


if __name__ == '__main__':
    run()