Spaces:
Build error
Build error
import streamlit as st | |
import pandas as pd | |
import seaborn as sns | |
import matplotlib.pyplot as plt | |
import plotly.express as px | |
st.write('### Nama : Kumala Cantika Ainun Maya') | |
st.write('### Batch : SBY-004') | |
st.write('### Objective : ') | |
st.write('##### Pada bagian ini berisikan EDA data informasi nasabah dengan kelayakan diberikan pinjaman') | |
st.markdown('---') | |
def run(): | |
# Load dataset | |
st.write('### Data Loan Status Nasabah') | |
df = pd.read_csv('train.csv') | |
st.dataframe(df) | |
st.markdown('---') | |
st.title('Exploratory Data Analysis(EDA) Data Layak Pinjam Nasabah') | |
# Plot Target | |
st.write('### Pie Chart Loan Status Nasabah') | |
fig,ax1 = plt.subplots(figsize=(5,5)) | |
df['Loan_Status'].value_counts().plot(kind='pie',labels=['yes', 'no'], | |
autopct='%.2f%%',ax=ax1, colors=['lime','red']) | |
st.pyplot(fig) | |
''' | |
Pie chart tersebut merupakan perbandingan antara target yang layak dan tidak layak mendapatkan pinjaman, | |
yang mana hanya sekitar **68.73%** nasabah yang layak untuk mendapatkan pinjaman. | |
''' | |
st.markdown('---') | |
# Plot ApplicantIncome | |
st.write('### Histogram dan Box Plot Pendapatan Nasabah') | |
fig = plt.figure(figsize=(15, 6)) | |
# Histogram | |
plt.subplot(1, 2, 1) | |
sns.histplot(data=df['ApplicantIncome'], palette='Set1', color='cyan') | |
plt.title('Histogram Pendapatan Nasabah') | |
plt.xlabel('Pendapatan') | |
plt.ylabel('Total') | |
# Boxplot | |
plt.subplot(1, 2, 2) | |
sns.boxplot(y=df['ApplicantIncome'], color='cyan') | |
plt.title('Boxplot Pendapatan') | |
plt.xlabel('Pendapatan') | |
st.pyplot(fig) | |
''' | |
Berdasarkan visualisasi histogram dan boxplot menunjukkan bahwa: | |
- Persebaran data pendapatan nasabah mayoritas ada pada rentang lebih dari 0 dan kurang dari sama dengan 10000 | |
- Terdapat banyak outlier yang terlihat dalam visualisasi boxplot | |
- Persebaran data cenderung miring kanan/ skew, sehingga mungkin diperlukan cek skewness pada fitur ini | |
''' | |
st.markdown('---') | |
# Plot Coapllicantincome | |
st.write('### Histogram dan Box Plot Pendapatan Sampingan Nasabah') | |
fig = plt.figure(figsize=(15, 6)) | |
# Scatterplot | |
plt.subplot(1, 2, 1) | |
sns.scatterplot(data=df['CoapplicantIncome'], palette='Set1', color='red') | |
plt.title('Histogram Pendapatan Sampingan Nasabah') | |
plt.xlabel('Pendapatan Sampingan') | |
plt.ylabel('Total') | |
# Boxplot | |
plt.subplot(1, 2, 2) | |
sns.boxplot(y=df['CoapplicantIncome'], color='red') | |
plt.title('Boxplot Pendapatan Sampingan') | |
plt.xlabel('Pendapatan Sampingan') | |
st.pyplot(fig) | |
''' | |
Berdasarkan visualisasi histogram dan boxplot menunjukkan bahwa: | |
- Persebaran data pendapatan nasabah mayoritas ada pada rentang 0 hingga kurang dari 10000 | |
- Terdapat banyak outlier yang terlihat dalam visualisasi boxplot | |
- Persebaran data cenderung miring kanan/ skew, sehingga mungkin diperlukan cek skewness pada fitur ini | |
- Jika dibandingkan dengan `ApplicantIncome`, pendapatan sampingan yang dimiliki oleh nasabah jauh lebih sedikit dibandingkan pendapatan utama | |
''' | |
st.markdown('---') | |
# Plot Loan Amount | |
st.write('### Histogram dan Box Plot Pinjaman Nasabah') | |
fig = plt.figure(figsize=(15, 6)) | |
# Distogram | |
plt.subplot(1, 2, 1) | |
sns.distplot(df['LoanAmount'], color='grey') | |
plt.title('Histogram Besar Pinjaman') | |
plt.xlabel('Pinjaman') | |
plt.ylabel('Total') | |
# Boxplot | |
plt.subplot(1, 2, 2) | |
sns.boxplot(y=df['LoanAmount'], color='grey') | |
plt.title('Boxplot Besar Pinjaman') | |
plt.xlabel('Pinjaman') | |
st.pyplot(fig) | |
''' | |
Berdasarkan visualisasi histogram dan boxplot menunjukkan bahwa: | |
- Persebaran data mayoritas pinjaman yang diajukan oleh nasabah adalah mulai rentang lebih dari sama dengan 100 hingga kurang dari 200 | |
- Terdapat banyak outlier yang terlihat dalam visualisasi boxplot | |
- Persebaran data cenderung miring kanan/ skew, sehingga mungkin diperlukan cek skewness juga pada fitur ini | |
''' | |
st.markdown('---') | |
# EDA catgoeical | |
st.write('### Pie Chart Informasi Status Nasabah') | |
fig = plt.figure(figsize = (20,10)) | |
# Fitur Gender | |
plt.subplot(1,4,1) | |
plt.pie(df['Gender'].value_counts(), labels=['Male', 'Female'], autopct='%1.0f%%',colors=['orange','grey']) | |
plt.title('Perbandingan Jenis Kelamin Nasabah') | |
# Fitur Married | |
plt.subplot(1,4,2) | |
plt.pie(df['Married'].value_counts(), labels=['Yes', 'No'], autopct='%1.0f%%',colors=['orange','grey']) | |
plt.title('Perbandingan Status Nasabah') | |
# Fitur Self Employed | |
plt.subplot(1,4,3) | |
plt.pie(df['Self_Employed'].value_counts(), labels=['No', 'Yes'], autopct='%1.0f%%',colors=['orange','grey']) | |
plt.title('Perbandingan Status Pekerjaan Nasabah') | |
# Fitur Credit_History | |
plt.subplot(1,4,4) | |
plt.pie(df['Credit_History'].value_counts(), labels=['Yes', 'No'], autopct='%1.0f%%',colors=['orange','grey']) | |
plt.title('Perbandingan Rekam Pinjaman Nasabah') | |
st.pyplot(fig) | |
''' | |
Hasil visualisasi 4 fitur categorical `Gender`, `Married`, `Self_Employed`, dan `Credit_History` diperoleh beberapa hal berikut: | |
- Sekitar 81% nasabah berjenis kelamin pria | |
- Sekitar 65% nasabah sudah berkeluarga | |
- Sekitar 86% nasabah tidak bekerja secara mandiri (bekerja kepada badan atau orang lain, sehingga berkemungkinan memiliki pendapatan yang tetap) | |
- Sekitar 84% nasabah sudah pernah melakukan pinjaman sebelumnya | |
''' | |
st.markdown('---') | |
# Plot bar perbadingan status Dependents | |
st.write('### Jumlah Tanggungan Nasabah') | |
fig,ax1 = plt.subplots(figsize=(5,5)) | |
df['Dependents'].value_counts().sort_index().plot(kind='bar', rot=0, color='navy') | |
plt.xlabel('Tanggungan (orang)') | |
plt.ylabel('Jumlah') | |
st.pyplot(fig) | |
''' | |
Berdasarkan visualisasi bar perbandingan jumlah tanggungan yang dimiliki nasabah diketahui bahwa: | |
- Sebagian besar nasabah tidak memiliki tanggungan pembiayaan | |
''' | |
st.markdown('---') | |
# Plot Loan Amount Term | |
st.write('### Scatter Persebaran Rentang Waktu Peminjaman') | |
fig = plt.figure(figsize=(10, 4)) | |
sns.scatterplot(data=df['Loan_Amount_Term'], palette='Set1', color='pink') | |
plt.xlabel('Waktu(hari)') | |
plt.ylabel('Jumlah') | |
st.pyplot(fig) | |
''' | |
Berdasarkan visualisasi histagram diatas menunjukkan bahwa: | |
- Rentang waktu peminjaman paling sering adalah dalam rentang 300 hingga 400 atau lebih tepatnya pada **360 hari** | |
- Dalam rentang waktu tersebut dapat juga berarti nasabah sebagian besar memiliki rentang waktu peminjaman selama 1 tahun lamanya. | |
''' | |
st.markdown('---') | |
if __name__ == '__main__': | |
run() | |