|
import streamlit as st |
|
import pandas as pd |
|
import numpy as np |
|
import matplotlib.pyplot as plt |
|
import seaborn as sns |
|
from PIL import Image |
|
|
|
def run(): |
|
st.title('Welcome to Explaration Data Analysis') |
|
|
|
df= pd.read_csv('P1G1_Kenneth Vincentius.csv') |
|
|
|
st.table(df.head(5)) |
|
|
|
st.title('Presentasi Persentase Default Payment') |
|
|
|
|
|
count_data = df['default_payment_next_month'].value_counts() |
|
total_data = len(df) |
|
percentage_data = (count_data / total_data) * 100 |
|
|
|
|
|
fig_1 = plt.figure() |
|
sns.barplot(x=percentage_data.index, y=percentage_data.values) |
|
plt.title('Presentasi Persentase Def Payment') |
|
plt.xlabel('def_payment') |
|
plt.ylabel('Persentase (%)') |
|
|
|
for i in range(len(percentage_data)): |
|
plt.text(i, percentage_data[i], f'{percentage_data[i]:.2f}%', ha='center', va='bottom') |
|
|
|
|
|
st.pyplot(fig_1) |
|
|
|
with st.expander('Explanation'): |
|
st.caption('Hasil : Kita bisa melihat bahwa 78.58 bisa bisa membayar dan 21.42% tidak bisa membayar') |
|
|
|
st.title("Persentase dari Gender") |
|
|
|
|
|
def_count = (df.sex.value_counts(normalize=True) * 100) |
|
fig_2 = plt.figure(figsize=(6, 6)) |
|
def_count.plot.bar() |
|
plt.xticks(fontsize=12, rotation=0) |
|
plt.yticks(fontsize=12) |
|
plt.title("Persentase dari Gender", fontsize=15) |
|
|
|
|
|
for x, y in zip([0, 1], def_count): |
|
plt.text(x, y, '{:.2f}%'.format(y), fontsize=12) |
|
|
|
|
|
st.pyplot(fig_2) |
|
|
|
with st.expander('Explanation'): |
|
st.caption('Bisa dilihat bahwa terdapat 39.24% di laki-laki=1 dan 60.76% didominasi oleh perempuan=2') |
|
|
|
|
|
st.title('Distribusi Usia') |
|
|
|
|
|
fig_3, ax = plt.subplots(1, 2, figsize=(12, 6)) |
|
|
|
|
|
sns.histplot(df['age'], kde=True, ax=ax[1]) |
|
ax[1].set_title('Distribution of Age') |
|
ax[1].set_xlabel('Age') |
|
ax[1].set_ylabel('Frequency') |
|
|
|
|
|
st.pyplot(fig_3) |
|
|
|
with st.expander('Explanation'): |
|
st.caption('Bisa dilihat bahwa persebaran umur dari umur 20 sampai 50') |