nickuperdana's picture
commit initial model deploy
27752c7 verified
import streamlit as st # untuk streamlit
import pandas as pd # untuk membaca tabel
# untuk visualisasi
import matplotlib.pyplot as plt
import seaborn as sns
def run():
st.title('Default Credit Card Payment Prediction') # judul streamlit
st.markdown('Model ini bertujuan untuk memprediksi status pembayaran seseorang di bulan mendatang dengan simbol 1=gagal bayar dan 0=kredit lancar.')
st.markdown('Model dikelola oleh Nicku R. Perdana (HCK-012)')
st.image('https://img.freepik.com/free-photo/online-shopping-cheerful-asian-girl-holding-credit-card-smartphone-paying-order-with-mobile-phone-standing-yellow-background_1258-93224.jpg?w=1380&t=st=1706441175~exp=1706441775~hmac=daf53df3a74b11c7abb0a3099d93afa158ed12b1d30ff6fdd5b84a390c4d8c44')
st.markdown('Sumber Gambar: Freepik')
st.markdown('---')
#EDA
st.markdown('# Exploratory Data Analysis')
st.markdown('## 1. Dataframe Credit Card Payment Log (BigQuery)')
st.markdown('Bagian ini bertujuan untuk menampilkan tabel (300 entri data teratas) yang telah digunakan untuk melatih model')
data = pd.read_csv('P1G5_Set_1_nicku_perdana.csv')
st.dataframe(data=data.head(300))
st.markdown('## 2. Distribusi data')
st.markdown('Bagian ini menampilkan informasi visualisasi seputar tabel bahan pelatihan model. ')
st.markdown('### 2A. Distribusi "limit_balance"')
canvas = plt.figure(figsize=(10,5))
sns.histplot(data=data, x=data['limit_balance'], kde=True).set(ylabel='Frekuensi')
st.pyplot(canvas)
st.markdown('Deskripsi: Grafik di atas menjelaskan sebaran distribusi limit kartu kredit yang dimiliki oleh nasabah dalam satuan USD.')
st.markdown('### 2B. Distribusi "sex"')
canvas = plt.figure(figsize=(10,5))
sns.countplot(data=data, x=data['sex']).set(ylabel='Frekuensi')
st.pyplot(canvas)
st.markdown('Deskripsi: Grafik di atas menjelaskan komposisi nasabah berdasarkan jenis kelamin dengan legenda berupa 1=laki-laki, 2=perempuan.')
st.markdown('### 2C. Distribusi "education_level"')
canvas = plt.figure(figsize=(10,5))
sns.countplot(data=data, x=data['education_level']).set(ylabel='Frekuensi')
st.pyplot(canvas)
st.markdown('Deskripsi: Grafik di atas menjelaskan komposisi nasabah berdasarkan jenjang pendidikan yang ditempuh terakhir kali dengan legenda berupa 0=lainnya, 1=Pascasarjana, 2=Sekolah Tinggi/Universitas, 3=Sekolah Menengah, 4=lainnya, 5=lainnya, 6=lainnya.')
st.markdown('### 2D. Distribusi "marital_status"')
canvas = plt.figure(figsize=(10,5))
sns.countplot(data=data, x=data['marital_status']).set(ylabel='Frekuensi')
st.pyplot(canvas)
st.markdown('Deskripsi: Grafik di atas menjelaskan komposisi nasabah berdasarkan status perkawinan dengan legenda berupa 0=lainnya, 1=menikah, 2=lajang, 3=cerai.')
st.markdown('### 2E. Distribusi "age"')
canvas = plt.figure(figsize=(10,5))
sns.histplot(data=data, x=data['age'], kde=True).set(ylabel='Frekuensi')
st.pyplot(canvas)
st.markdown('Deskripsi: Grafik di atas menjelaskan sebaran distribusi usia nasabah.')
st.markdown('### 2F. Distribusi Status Pembayaran')
opsiPay = st.selectbox(
'Pilih status berdasarkan periodenya.', # judulnya
('pay_0', 'pay_2', 'pay_3', 'pay_4', 'pay_5', 'pay_6'),# daftar opsinya
index=None, placeholder='Pilih periode...' )
if opsiPay != None:
st.markdown(f'#### Distribusi "{opsiPay}"')
canvas = plt.figure(figsize=(10,5))
sns.countplot(data=data, x=data[opsiPay]).set(ylabel='Frekuensi')
st.pyplot(canvas)
st.markdown(f'Deskripsi: Grafik di atas menjelaskan komposisi nasabah berdasarkan status pembayaran pada periode {opsiPay} dengan legenda berupa -2=Tagihan lunas dan tidak ada transaksi (inactive), -1=Tagihan lunas; ada transaksi yang belum dibayarkan karena tagihan belum muncul, 0=Tagihan kartu kredit telah dibayarkan jumlah minimal, 1=Terlambat bayar 1 bulan, 2=Terlambat bayar 2 bulan, 3=Terlambat bayar 3 bulan, 4=Terlambat bayar 4 bulan, 5=Terlambat bayar 5 bulan, 6=Terlambat bayar 6 bulan, 7=Terlambat bayar 7 bulan, 8=Terlambat bayar 8 bulan, 9=Terlambat bayar 9 bulan.')
st.markdown('### 2G. Distribusi Jumlah Tagihan Kartu Kredit')
opsiBillAmt = st.selectbox(
'Pilih periode tagihan.', # judulnya
('bill_amt_0', 'bill_amt_2', 'bill_amt_3', 'bill_amt_4', 'bill_amt_5', 'bill_amt_6'),# daftar opsinya
index=None, placeholder='Pilih periode...' )
if opsiBillAmt != None:
st.markdown(f'#### Distribusi "{opsiBillAmt}"')
canvas = plt.figure(figsize=(10,5))
sns.histplot(data=data, x=data[opsiBillAmt], kde=True).set(ylabel='Frekuensi')
st.pyplot(canvas)
st.markdown(f'Deskripsi: GDeskripsi: Grafik di atas menjelaskan sebaran tagihan kartu kredit nasabah pada periode {opsiBillAmt} dalam satuan USD.')
st.markdown('### 2H. Distribusi Jumlah Tagihan Kartu Kredit yang Terbayarkan')
opsiPayAmt = st.selectbox(
'Pilih periode tagihan.', # judulnya
('pay_amt_0', 'pay_amt_2', 'pay_amt_3', 'pay_amt_4', 'pay_amt_5', 'pay_amt_6'),# daftar opsinya
index=None, placeholder='Pilih periode...' )
if opsiPayAmt != None:
st.markdown(f'#### Distribusi "{opsiPayAmt}"')
canvas = plt.figure(figsize=(10,5))
sns.histplot(data=data, x=data[opsiPayAmt], kde=True).set(ylabel='Frekuensi')
st.pyplot(canvas)
st.markdown(f'Deskripsi: GDeskripsi: Grafik di atas menjelaskan sebaran tagihan kartu kredit nasabah yang telah terbayarkan pada periode {opsiPayAmt} dalam satuan USD.')
st.markdown('### 2I. Distribusi "default_payment_next_month"')
canvas = plt.figure(figsize=(10,5))
sns.countplot(data=data, x=data['default_payment_next_month']).set(ylabel='Frekuensi')
st.pyplot(canvas)
st.markdown('Deskripsi: Grafik di atas menjelaskan komposisi nasabah berdasarkan status pembayaran kartu kredit dengan legenda berupa 0=kredit lancar, 1=gagal bayar.')
if __name__ == '__main__':
run()