File size: 2,662 Bytes
4a965b7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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()

    #menggroupkan churn berdasarkan membership
    churnMember =data.groupby('membership_category')['churn_risk_score'].mean()*100

    # buat dictionary untuk mapping nama index yang baru
    new_index = {}
    for index in churnMember.index:
        new_index[index] = index.replace('Membership', '')

    # rename index dengan dictionary new_index
    churnMember = churnMember.rename(index=new_index)
    churnMember = churnMember.sort_values()

    # plot bar chart
    plt.bar(churnMember.index, churnMember.values, color='#89cff0')

    # tambahkan judul dan label sumbu
    plt.title('Rata-Rata Churn Risk Score per Kategori Membership')
    plt.xlabel('Kategori Membership')
    plt.ylabel('Rata-Rata Churn Risk Score (%)')

    # simpan plot ke dalam variabel fig
    fig = plt.gcf()

    # tampilkan plot pada Streamlit
    st.pyplot(fig)

    # menggroupkan churn berdasarkan Complaint
    churnCom = data.groupby('past_complaint')['churn_risk_score'].mean()*100

    # plot bar chart
    fig, ax = plt.subplots()
    ax.bar(churnCom.index, churnCom.values, color='#89cff0')

    # tambahkan judul dan label sumbu
    ax.set_title('Rata-Rata Churn Risk Score berdasarkan pernahnya complaint')
    ax.set_xlabel('Past Complaint')
    ax.set_ylabel('Rata-Rata Churn Risk Score (%)')

    # menampilkan plot pada Streamlit
    st.pyplot(fig)


    # membuat dataframe copy dari dataframe awal
    df1 = data.copy()

    # mengelompokkan data pada kolom AGE menjadi 10 kelompok
    df1['group'] = pd.cut(df1['age'], bins=8)

    # menghitung nilai rata-rata pada kolom LUNG_CANCER untuk setiap kelompok
    result = df1.groupby('group')['churn_risk_score'].mean()*100

    # plot hasilnya menggunakan seaborn dengan barplot berwarna pink
    sns.set_style('whitegrid')
    ax = sns.barplot(x=result.index, y=result, color='pink')
    ax.set(xlabel='AGE Group', ylabel='churn risk score (YES)')

    # mengatur font size pada axis x
    ax.tick_params(axis='x', labelsize=7.5)

    # menampilkan plot pada streamlit
    st.pyplot(plt)

if __name__== '__main__':
    run()