Spaces:
Runtime error
Runtime error
import streamlit as st | |
import pandas as pd | |
import seaborn as sns | |
import matplotlib.pyplot as plt | |
import plotly.express as px | |
from PIL import Image | |
def run() : | |
# Membuat Sub Header | |
st.title('**EDA Churn Customer**') | |
st.write('~ P2M1-Desti Ratna Komala-RMT-020') | |
#menambahkan Gambar | |
image = Image.open('image_pred.jpg') | |
st.image(image, caption='churn.jpg') | |
# Import df | |
df_eda = pd.read_csv('https://raw.githubusercontent.com/destiratnakomala/Hacktiv8_Folder/main/churn.csv') | |
#membuat garis lurus | |
st.markdown('-----') | |
#magic syntax | |
''' | |
Pada page ini, akan dilakukan ekplorasi dataset sederhana. | |
Berikut adalah dataset Customer Churn yang digunakan | |
''' | |
#membuat title | |
st.subheader('Customer Churn EDA') | |
# Import df | |
df = pd.read_csv('https://raw.githubusercontent.com/destiratnakomala/Hacktiv8_Folder/main/churn.csv') | |
st.dataframe(df) | |
st.write('Dari visualisasi dibawah dapat disimpulkan bahwa :') | |
st.markdown('- *Customer* yang *churn* lebih banyak dari pada *customer* yang tidak *churn*') | |
#membuat garis lurus | |
st.markdown('-----') | |
pilihanuser=st.selectbox('Pilih Feature:', ('gender', 'region_category', 'membership_category', 'joined_through_referral', 'preferred_offer_types', 'medium_of_operation', 'internet_option', 'used_special_discount', 'offer_application_preference', 'past_complaint', 'complaint_status', 'feedback')) | |
#-------------------------------------------- | |
fig, ax =plt.subplots(1,3,figsize=(25,8)) | |
fig.suptitle(f'{pilihanuser} terhadap Customer Churn', fontsize=17, fontweight='bold') | |
#visualisasikan data | |
plt.subplot(1,3,1) | |
plt.title(f'{pilihanuser} terhadap Customer Churn', fontsize=14) | |
ax = sns.countplot(data = df, x = df[pilihanuser], hue="churn_risk_score", palette = 'pastel') | |
plt.ylabel("#churn", fontsize= 14) | |
plt.xticks(rotation=90) | |
plt.legend(loc=0) | |
plt.subplot(1,3,2) | |
plt.title(f'{pilihanuser} terhadap %Customer Churn', fontsize=12) | |
ax = sns.barplot(x = df[pilihanuser], y = "churn_risk_score", data = df, palette = sns.color_palette('pastel')[1:2], errorbar= None) | |
plt.ylabel("%Churn", fontsize= 14) | |
plt.xticks(rotation=90) | |
for p in ax.patches: | |
ax.annotate("%.2f" %(p.get_height()), (p.get_x()+0.3, p.get_height()+0.005),fontsize=12) | |
plt.subplot(1,3,3) | |
round(df[pilihanuser].value_counts()/df.shape[0]*500,2).plot.pie(autopct= '%1.1f%%',colors=sns.color_palette('pastel')[0:10],shadow=True, legend=None) | |
plt.ylabel("") | |
plt.xticks(rotation=45) | |
plt.title(pilihanuser, fontsize=14) | |
st.pyplot(fig) | |
st.markdown('-----') | |
fig=plt.figure(figsize=(15, 5)) | |
pilihanuser2=st.selectbox('Pilih Feature Numerik:',('age','days_since_last_login', 'avg_time_spent','avg_transaction_value', 'avg_frequency_login_days', 'points_in_wallet')) | |
plt.subplot(1,2,1) | |
sns.distplot(df[pilihanuser2]) | |
plt.ticklabel_format(style='plain', axis='x') | |
plt.ylabel('') | |
plt.subplot(1,2,2) | |
sns.kdeplot(df.loc[(df['churn_risk_score'] == 0), pilihanuser2], label = 'not_churn', fill = True) | |
sns.kdeplot(df.loc[(df['churn_risk_score'] == 1), pilihanuser2], label = 'churn', fill = True) | |
plt.ylabel('') | |
plt.legend() | |
st.pyplot(fig) | |
#membuat garis lurus | |
st.markdown('-----') | |
if __name__ == '__main__': | |
run() |