File size: 3,226 Bytes
00216ee
 
 
 
 
 
 
 
cde60e7
 
 
00216ee
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
103
104
105
106
107
108
109
110
111
112
113
114
115
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="Heart Failure Classification",
    layout="wide",
    initial_sidebar_state="expanded",
)

# dataset
dataset = "https://raw.githubusercontent.com/ediashta/p1-ftds-020-rmt-g3-ediashta/main/h8dsft_P1G3_Ediashta.csv"
data = pd.read_csv(dataset)

cat_col = ["anaemia", "diabetes", "high_blood_pressure", "sex", "smoking"]
num_col = [
    "age",
    "creatinine_phosphokinase",
    "ejection_fraction",
    "platelets",
    "serum_creatinine",
    "serum_sodium",
    "time",
]

data_ord = data[cat_col]
data_num = data[num_col]


def dataset():
    # distribution plot
    st.title("Heart Failure Classification")
    st.subheader("Dataset")
    st.dataframe(data)

    # column description
    st.subheader("Column Description")

    col1, col2 = st.columns(2)
    col1.markdown("* **age** : Umur ")
    col1.markdown("* **anaemia** : Penurunan Sel Darah Merah (**boolean**)")
    col1.markdown(
        "* **creatinine_phosphokinase** : Tingkat Enzim CPK pada darah (**mcg/L**)"
    )
    col1.markdown("* **diabetes** : Status diabetes (**boolean**)")
    col1.markdown(
        "* **ejection_fraction** : Persentase darah keluar dari jantung pada tiap kontraksi (**percentage**)"
    )
    col1.markdown("* **high_blood_pressure** : Status Hipertensi (**boolean**)")
    col1.markdown("* **platelets** : Platelets pada darah (**kiloplatelets/mL**) ")
    col2.markdown(
        "* **serum_creatinine** : Tingkat serum kreatinin pada darah (**mg/dL**) "
    )
    col2.markdown("* **serum_sodium** : Tingkat serum sodium pada darah (**mEq/L**)")
    col2.markdown("* **sex** : Jenis Kelamin (**binary**)")
    col2.markdown("* **smoking** : Status merokok (**boolean**)")
    col2.markdown("* **time** : Periode follow-up (**days**)")
    col2.markdown("* **DEATH_event** : Status kematian saat follow-up (**boolean**)")


def distribution():
    # distribution plot
    st.title("Heart Failure Classification")
    st.subheader("Distribution")

    col1, col2 = st.columns(2)

    # Death Event Bar Plot
    fig = plt.figure(figsize=(10, 6))
    col1.write("Death Event Barplot")
    sns.countplot(data=data, x="DEATH_EVENT", palette="coolwarm")
    col1.pyplot(fig)

    # Death Event Bar Plot
    fig = plt.figure(figsize=(10, 6))
    col2.write("Age Distribution")
    sns.histplot(
        data=data, x="age", kde=True, bins=30, hue="DEATH_EVENT", palette="coolwarm"
    )
    col2.pyplot(fig)


def boxplot():
    # distribution plot
    st.title("Heart Failure Classification")
    st.subheader("Boxplot")

    fig, axs = plt.subplots(2, 4, figsize=(20, 10))

    for i, x in enumerate(data_num):
        if i < 4:
            axs[0, i].set_title(x)
            axs[0, i].boxplot(data[x])
        elif 7 >= i >= 4:
            axs[1, i - 4].set_title(x)
            axs[1, i - 4].boxplot(data[x])
            axs[1, 3].axis("off")

    fig.tight_layout()

    st.pyplot(fig)


def corr_matrix():
    # distribution plot
    st.title("Heart Failure Classification")
    st.subheader("Correlation")


if __name__ == "__main__":
    run()