|
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= 'Prediksi Churn Pelanggan', |
|
layout='wide', |
|
initial_sidebar_state='expanded' |
|
) |
|
|
|
def run(): |
|
image = Image.open('image.png') |
|
resized_image = image.resize((605, 212)) |
|
st.image(resized_image, caption='Churn') |
|
|
|
st.title('Prediksi Churn Pelanggan') |
|
df = pd.read_csv('https://raw.githubusercontent.com/Azrieldr/latihan/master/churn.csv') |
|
st.dataframe(df) |
|
|
|
data=df.dropna() |
|
|
|
|
|
churnMember =data.groupby('membership_category')['churn_risk_score'].mean()*100 |
|
|
|
|
|
new_index = {} |
|
for index in churnMember.index: |
|
new_index[index] = index.replace('Membership', '') |
|
|
|
|
|
churnMember = churnMember.rename(index=new_index) |
|
churnMember = churnMember.sort_values() |
|
|
|
|
|
plt.bar(churnMember.index, churnMember.values, color='#89cff0') |
|
|
|
|
|
plt.title('Rata-Rata Churn Risk Score per Kategori Membership') |
|
plt.xlabel('Kategori Membership') |
|
plt.ylabel('Rata-Rata Churn Risk Score (%)') |
|
|
|
|
|
fig = plt.gcf() |
|
|
|
|
|
st.pyplot(fig) |
|
|
|
|
|
churnCom = data.groupby('past_complaint')['churn_risk_score'].mean()*100 |
|
|
|
|
|
fig, ax = plt.subplots() |
|
ax.bar(churnCom.index, churnCom.values, color='#89cff0') |
|
|
|
|
|
ax.set_title('Rata-Rata Churn Risk Score berdasarkan pernahnya complaint') |
|
ax.set_xlabel('Past Complaint') |
|
ax.set_ylabel('Rata-Rata Churn Risk Score (%)') |
|
|
|
|
|
st.pyplot(fig) |
|
|
|
|
|
|
|
df1 = data.copy() |
|
|
|
|
|
df1['group'] = pd.cut(df1['age'], bins=8) |
|
|
|
|
|
result = df1.groupby('group')['churn_risk_score'].mean()*100 |
|
|
|
|
|
sns.set_style('whitegrid') |
|
ax = sns.barplot(x=result.index, y=result, color='pink') |
|
ax.set(xlabel='AGE Group', ylabel='churn risk score (YES)') |
|
|
|
|
|
ax.tick_params(axis='x', labelsize=7.5) |
|
|
|
|
|
st.pyplot(plt) |
|
|
|
if __name__== '__main__': |
|
run() |