churn_risk / eda.py
pram2601's picture
Update eda.py
21b5b9a
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_icon='Churn and Prediction',
layout='wide',
initial_sidebar_state='expanded')
def run():
# membuat judul
st.title('Churn and Prediction')
# Membuat Sub header
st.subheader ('Exploratory Data Analysis Churn Risk Score')
# Menambahkan gambar
image = Image.open('customer-churn-edit.jpeg')
st.image(image)
# Menambahkan deskripsi
st.write('Ditengah ramainya persaingan dunia industri yang semakin ketat ini, maka menjaga pelanggan tetap puas dan tetap menggunakan produk dari perusahaan kita adalah hal yang paling penting dalam sebuah bisnis. Dimana kita harus meminimalisir pelanggan kita yang akan akan churn. Dalam kasus ini saya mencoba untuk membuat model machine learnig yang akan digunakan untuk memprediksi pelanggan yang akan churn atau tidak, untuk membantu memberikan gambaran pada perusahaan tentang pelanggan yang akan churn dan dapat mengambil tindakan yang tepat untuk mengatsai masalah tersebut')
# mbuat garis lurus
st.write('---')
# Magic Syntax
'''
Pada dataset di bawah ini terdpat pelanggan dengan berbagai kondisi mulai dari tempat tinggal, umur, jenis kelamin, dll beserta dengan churn risk scorenya. Dengan dataset ini saya akan coba mencari tau karakteristik pelanggan yang menngalami churn
'''
# menambhakan dataframe
data=pd.read_csv('https://raw.githubusercontent.com/pram2601/Hacktiv8/main/churn.csv')
st.dataframe(data)
# membuat data pelanggan yang churn risk score = 1
data_c = data[data['churn_risk_score']==1]
# membuat pie chart untuk melihat perbandingan churn risk dengan kolom lain
st.write('### Data Churn Berdasarkan Berbagai Kondisi')
fig=plt.figure(figsize=(25,5))
plt.subplot(1, 4, 1)
plt.pie(data['churn_risk_score'].value_counts(), labels=['Yes', 'No'], autopct='%1.1f%%')
plt.title('Churn')
plt.subplot(1, 4, 2)
plt.pie(data_c['gender'].value_counts(), labels=['Female', 'Male'], autopct='%1.1f%%')
plt.title('Churn by Gender')
plt.subplot(1, 4, 3)
plt.pie(data_c['region_category'].value_counts(), labels=['Town', 'City', 'Village'], autopct='%1.1f%%')
plt.title('Churn by Region')
plt.subplot(1, 4, 4)
plt.pie(data_c['membership_category'].value_counts(), labels=['Basic Membership', 'No Membership', 'Silver Membership','Gold Membership'], autopct='%1.1f%%')
plt.title('Churn by Membership Category')
st.pyplot(fig)
st.write('- Dalam chart diatas terlihat bahwa pelanggan yang churn cukup banyak yaitu 54.1%, ini sangat tidak baik untuk sebuah bisnis, dimana jenis kelamin yang churn mayoritas memiliki jumlah yang sama, tidak ada perbedaan yang signifikan. Namun pada region ini cukup banyak yang churn di Town dan City, keduanya cukup mendoninasi, dimana yang di desa malah sedikit yang mengalami churn. Untuk membershipnya sendiri kebanyakan di dominasi oleh basic membership dan no membership(belum dapat title membership)')
# mengecek churn pada kolom feedback dan age
fig = plt.figure(figsize=(30,5))
plt.subplot(1, 2, 1)
sns.countplot(x=data_c['feedback'])
plt.title('Churn By Feedback')
plt.subplot(1, 2, 2)
sns.countplot(x=data_c['age'])
plt.title('Churn By Age')
plt.xticks(rotation=90)
st.pyplot(fig)
st.write('- Dari chart diatas pelanggan yang churn kebanyakan mempunyai feedback yang negatif, dan untuk kolom age yan churn datanya tersebar secara merata')
# mengecek churn pada kolom # mengecek churn pada kolom used special discount, offer aplication preference, and past complaint
fig = plt.figure(figsize=(20,5))
plt.subplot(1, 3, 1)
sns.countplot(x=data_c['used_special_discount'])
plt.title('Churn By Used Special Discount')
plt.subplot(1, 3, 2)
sns.countplot(x=data_c['offer_application_preference'])
plt.title('Churn By Offer Application Preference')
plt.subplot(1, 3, 3)
sns.countplot(x=data_c['past_complaint'])
plt.title('Churn By Past Complaint')
st.pyplot(fig)
st.write('- Dari chart diatas walaupun menggunakan diskon masih saja pelanggan tetap mengalami churn, dan pelanggan yang sebelumnya pernah komplain dan tidak, masih sama saja tetap bisa mengalami churn')
st.write('---')
st.write('Pada EDA dalam kasus kali ini agak cukup membingungkann karakteristik pelanggaan yang churn ini, dimana mereka sudah diberikan promo dan banyak yang menggunakan promo tersebut tapi masih tetap saja churn, ini sepertinya memang produknya yang perlu ditingkatkan lagi kualitsnya. Dilihat dari feedback juga yang churn kebanyakan memberikan feedback yang negatif, mulai dari pelayanan yang kurang, produk yang kurang, dll. Ini mungkin bisa jadi bahan evaluasi untuk perusahan dalam hal pelayanan dan kualitas produk.')
if __name__ == '__main__': run()