File size: 4,975 Bytes
c092e6e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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()