hansaal/Census-Income-Prediction-Tool
0
1import streamlit as st
2import pandas as pd
3import numpy as np
4import seaborn as sns
5from PIL import Image
6import plotly.express as px
7import matplotlib.pyplot as plt
8
9# Function untuk nge-run
10def run():
11
12 # Membuat Title
13 st.title("Adult Census Income")
14
15 # Membuat Subheader
16 st.subheader("Unveiling Patterns in Income Data")
17
18 # Membuat Description
19 st.markdown("""
20 Halaman ini berisi eksplorasi mendalam dari dataset Census Adult,
21 menyoroti tren dan pola penting yang memengaruhi tingkat pendapatan.
22 Temukan bagaimana faktor seperti usia, pendidikan, dan pekerjaan
23 berkontribusi pada distribusi pendapatan.
24 """)
25
26 # Menambahkan Deskripsi
27 st.write('*Halaman ini dibuat oleh Haniifah Salmaa*')
28
29 # Membuat garis lurus horizontal
30 st.markdown('---')
31
32 # Menampilkan DataFrame
33 df = pd.read_csv('census.csv')
34 st.dataframe(df)
35
36 # Menampilkan visualisasi 1
37 st.write('### Pengaruh Pendidikan terhadap Capital Gain dan Capital Loss berdasarkan Pendapatan')
38 fig = plt.figure(figsize=(13,6))
39 sns.scatterplot(x='education.num', y='capital.gain', data=df, hue='income')
40 plt.title('Capital Gain vs Education by Income')
41 st.pyplot(fig)
42
43 fig = plt.figure(figsize=(10,6))
44 sns.scatterplot(x='education.num', y='capital.loss', data=df, hue='income')
45 plt.title('Capital Loss vs Education by Income')
46 st.pyplot(fig)
47
48 # Menampilkan visualisasi 2
49 st.write('### Hubungan antara Pendapatan dan Final Weight')
50 fig = plt.figure(figsize=(10,6))
51 sns.boxplot(x='income', y='fnlwgt', data=df)
52 plt.title('Income vs Final Weight')
53 plt.xlabel('Income')
54 plt.ylabel('Final Weight')
55 st.pyplot(fig)
56
57 # Menampilkan visualisasi 3
58 region_mapping = {
59 'United-States': 'North America',
60 'Canada': 'North America',
61 'Mexico': 'North America',
62 'Puerto-Rico': 'North America',
63 'Outlying-US(Guam-USVI-etc)': 'North America',
64 'Dominican-Republic': 'Central/South America',
65 'El-Salvador': 'Central/South America',
66 'Honduras': 'Central/South America',
67 'Jamaica': 'Central/South America',
68 'Guatemala': 'Central/South America',
69 'Columbia': 'Central/South America',
70 'Ecuador': 'Central/South America',
71 'Haiti': 'Central/South America',
72 'Peru': 'Central/South America',
73 'Trinadad&Tobago': 'Central/South America',
74 'Brazil': 'Central/South America',
75 'India': 'Asia',
76 'Philippines': 'Asia',
77 'China': 'Asia',
78 'Japan': 'Asia',
79 'Iran': 'Asia',
80 'Cambodia': 'Asia',
81 'Laos': 'Asia',
82 'Taiwan': 'Asia',
83 'Hong': 'Asia',
84 'Thailand': 'Asia',
85 'Vietnam': 'Asia',
86 'Germany': 'Europe',
87 'France': 'Europe',
88 'Poland': 'Europe',
89 'Italy': 'Europe',
90 'England': 'Europe',
91 'Portugal': 'Europe',
92 'Ireland': 'Europe',
93 'Hungary': 'Europe',
94 'Yugoslavia': 'Europe',
95 'Scotland': 'Europe',
96 'Holand-Netherlands': 'Europe',
97 'Greece': 'Europe',
98 np.nan: 'Other',
99 'South': 'Other'
100 }
101 df['region'] = df['native.country'].map(region_mapping)
102
103 st.write('### Distribusi Pendapatan Berdasarkan Negara Asal')
104 fig = plt.figure(figsize=(7, 4))
105 sns.countplot(data=df, x='region', hue='income', palette='pastel')
106 plt.title('Income Distribution by Region')
107 plt.xlabel('')
108 plt.ylabel('Count')
109 plt.tight_layout()
110 st.pyplot(fig)
111 