Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import numpy as np | |
import seaborn as sns | |
import matplotlib.pyplot as plt | |
import plotly.express as px | |
from PIL import Image | |
st.set_page_config( | |
page_title = 'Home Credit Analysis - EDA', | |
layout = 'wide', | |
initial_sidebar_state = 'expanded' | |
) | |
def run(): | |
# Membuat Title | |
st.title('Home Credit Analysis') | |
# Membuat Sub Header | |
st.subheader('EDA for Home Credit Analysis') | |
# Menambahkan Gambar | |
image = Image.open('credit.jpeg') | |
st.image(image, caption='Home Credit') | |
# Menambahkan Deskripsi | |
st.write('This page created by **Imam Zarkasie**') | |
st.write('### Hello!') | |
st.write('#### The competition of credit card service is heating up!') | |
st.write('##### In this page we can explore customer segmentation, more than that this website provides an ability to predict a customer payment risk.') | |
# Membuat Garis Lurus | |
st.markdown('---') | |
# Magic Syntax | |
''' | |
On this page, the author will do a simple exploration. | |
The dataset used is the churn dataset. | |
''' | |
# Show DataFrame | |
df = pd.read_csv('df_subset.csv') | |
st.dataframe(df) | |
#Melihat histogram fitur target | |
# Membuat visualisasi Distribusi Payment | |
fig, ax =plt.subplots(1,2,figsize=(15,6)) | |
sns.countplot(x='TARGET', data=df, palette="winter", ax=ax[0]) | |
ax[0].set_xlabel("Payment", fontsize= 12) | |
ax[0].set_ylabel("# of Payment", fontsize= 12) | |
fig.suptitle('Payment Distribution', fontsize=18, fontweight='bold') | |
ax[0].set_ylim(0,300000) | |
ax[0].tick_params(axis='x', rotation=90) | |
plt.xlabel("Payment", fontsize= 12) | |
plt.ylabel("# of Payment", fontsize= 12) | |
for p in ax[0].patches: | |
ax[0].annotate("%.0f"%(p.get_height()), (p.get_x() + p.get_width() / 2, | |
p.get_height()+205), ha='center', va='center',fontsize = 11) | |
df['TARGET'].value_counts().plot(kind='pie',autopct='%1.1f%%', textprops = {"fontsize":12}) | |
ax[1].set_ylabel("% of Payment", fontsize= 12) | |
st.pyplot(fig) | |
# Membuat visualisasi Distribusi Contract | |
fig, ax =plt.subplots(1,2,figsize=(15,6)) | |
sns.countplot(x='NAME_CONTRACT_TYPE', data=df, palette="winter", ax=ax[0]) | |
ax[0].set_xlabel("Contract", fontsize= 12) | |
ax[0].set_ylabel("# of Contract", fontsize= 12) | |
fig.suptitle('Contract Distribution', fontsize=18, fontweight='bold') | |
ax[0].set_ylim(0,300000) | |
ax[0].tick_params(axis='x', rotation=90) | |
plt.xlabel("Contract", fontsize= 12) | |
plt.ylabel("# of Contract", fontsize= 12) | |
for p in ax[0].patches: | |
ax[0].annotate("%.0f"%(p.get_height()), (p.get_x() + p.get_width() / 2, | |
p.get_height()+205), ha='center', va='center',fontsize = 11) | |
df['NAME_CONTRACT_TYPE'].value_counts().plot(kind='pie',autopct='%1.1f%%', textprops = {"fontsize":12}) | |
ax[1].set_ylabel("% of Contract", fontsize= 12) | |
plt.show() | |
# Menampilkan plot di Streamlit | |
st.pyplot(fig) | |
# Membuat visualisasi Distribusi Gender | |
fig, ax =plt.subplots(1,2,figsize=(15,6)) | |
sns.countplot(x='CODE_GENDER', data=df, palette="winter", ax=ax[0]) | |
ax[0].set_xlabel("Gender", fontsize= 12) | |
ax[0].set_ylabel("# of Gender", fontsize= 12) | |
fig.suptitle('Gender Distribution', fontsize=18, fontweight='bold') | |
ax[0].set_ylim(0,300000) | |
ax[0].tick_params(axis='x', rotation=90) | |
plt.xlabel("Gender", fontsize= 12) | |
plt.ylabel("# of Gender", fontsize= 12) | |
for p in ax[0].patches: | |
ax[0].annotate("%.0f"%(p.get_height()), (p.get_x() + p.get_width() / 2, | |
p.get_height()+205), ha='center', va='center',fontsize = 11) | |
df['CODE_GENDER'].value_counts().plot(kind='pie',autopct='%1.1f%%', textprops = {"fontsize":12}) | |
ax[1].set_ylabel("% of Gender", fontsize= 12) | |
plt.show() | |
# Menampilkan plot di Streamlit | |
st.pyplot(fig) | |
# Membuat plot scatter | |
fig, ax = plt.subplots(figsize=(6, 3)) | |
sns.scatterplot(x='AMT_ANNUITY', y='AMT_CREDIT', hue='TARGET', data=df, ax=ax) | |
# Menambahkan label sumbu dan judul plot | |
plt.xlabel('AMT_ANNUITY') | |
plt.ylabel('AMT_CREDIT') | |
plt.title('Scatter Plot: AMT_ANNUITY vs AMT_CREDIT') | |
# Menambahkan legenda | |
plt.legend(title='Target') | |
# Menampilkan plot di Streamlit | |
st.pyplot(fig) | |
if __name__=='__main__': | |
run() |