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 st.set_page_config( page_title = 'Churn Condition', layout = 'wide', initial_sidebar_state='expanded' ) def run(): # title st.title( 'Churn Customer') # sub header st.subheader('Churn or Not Churn') # insert image image = Image.open('2.jpg') st.image(image, caption='image from project pro, education purpose only') # Deskripsi st.write('Exploratory Data from Churn dataset') # show data frame st.write('The first 10 Data') df = pd.read_csv('https://raw.githubusercontent.com/mukhlishr/rasyidi/main/churn.csv') st.dataframe(df.head(10)) # Barplot target columns st.write('###### Churn condition ') st.write('###### Churn = 1 ; Not Churn = 0 ') fig=plt.figure(figsize=(15,5)) sns.countplot(x='churn_risk_score', data = df) st.pyplot(fig) # Barplot avg transaction value st.write('###### Avg Transaction Value by Customer churn') a=df[df['churn_risk_score']==1]['avg_transaction_value'] fig=plt.figure(figsize=(15,5)) sns.barplot(x=a.index, y=a) st.pyplot(fig) # Barplot frequency login st.write('###### Avg Frequency login (1 = 1-10, 2 = 11-20, ... 7 >= 51)') bins = [-1, 10,20,30,40,50,100] labels =[1,2,3,4,5,6,7] df['binned_frequency_login'] = pd.cut(df['avg_frequency_login_days'], bins,labels=labels).astype(float) fig=plt.figure(figsize=(15,5)) sns.countplot(x='binned_frequency_login', data = df) st.pyplot(fig) # Pieplot membership st.write('###### Membership') data = df['membership_category'].value_counts() keys = df['membership_category'].value_counts().index palette_color = sns.color_palette('bright') fig=plt.figure(figsize=(15,5)) plt.pie(data, labels=keys, colors=palette_color, autopct='%.0f%%') plt.title('Pieplot') st.pyplot(fig) # Pieplot joined through referral st.write('###### joined through referral') data = df['joined_through_referral'].value_counts() keys = df['joined_through_referral'].value_counts().index palette_color = sns.color_palette('bright') fig=plt.figure(figsize=(15,5)) plt.pie(data, labels=keys, colors=palette_color, autopct='%.0f%%') plt.title('Pieplot') st.pyplot(fig) # Pieplot preferred_offer_types st.write('###### preferred offer types') data = df['preferred_offer_types'].value_counts() keys = df['preferred_offer_types'].value_counts().index palette_color = sns.color_palette('bright') fig=plt.figure(figsize=(15,5)) plt.pie(data, labels=keys, colors=palette_color, autopct='%.0f%%') plt.title('Pieplot') st.pyplot(fig) # Pieplot past_complaint st.write('###### past complaint') data = df['past_complaint'].value_counts() keys = df['past_complaint'].value_counts().index palette_color = sns.color_palette('bright') fig=plt.figure(figsize=(15,5)) plt.pie(data, labels=keys, colors=palette_color, autopct='%.0f%%') plt.title('Pieplot') st.pyplot(fig) # Pieplot feedback st.write('###### feedback ') data = df['feedback'].value_counts() keys = df['feedback'].value_counts().index palette_color = sns.color_palette('bright') fig=plt.figure(figsize=(15,5)) plt.pie(data, labels=keys, colors=palette_color, autopct='%.0f%%') plt.title('Pieplot') st.pyplot(fig) if __name__ == '__main__': run()