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()