Andika Atmanegara Putra
update
dba73d1
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='EDA',
layout='wide',
initial_sidebar_state='expanded'
)
def run():
# title
st.title('Predicting Patient Survival')
# sub header
st.subheader('Understanding Mortality Risk Factors and Predictive Modeling')
# add pic
image = Image.open('heart.png')
st.image(image, caption='Health Parameter')
# add text
'''
Page ini dibuat untuk memprediksi **kematian pasien** dengan menggunakan
dataset yang tersedia. Dengan melakukan explorasi, akan ditinjau beberapa
insight yang dapat menjadi faktor-faktor / variabel yang membuat seorang
pasien dapat diprediksi meninggal atau tidak.
'''
markdown_text = '''
## Variable Descriptions
| Variable | Description |
|-------------------------|-----------------------------------------------------------------------------------------------|
| age | Age of the patient in years. |
| anaemia | Whether the patient has anemia or not. (1=True, 0=False) |
| creatinine_phosphokinase| Level of the enzyme creatinine phosphokinase in the patient's blood in units (mcg/L). |
| diabetes | Whether the patient has diabetes or not. (1=True, 0=False) |
| ejection_fraction | Percentage of blood volume ejected from the heart during each contraction. |
| high_blood_pressure | Whether the patient has high blood pressure or not. (1=True, 0=False) |
| platelets | Level of platelets in the patient's blood in units (kiloplatelets/mL). |
| serum_creatinine | Level of creatinine in the patient's blood in units (mg/dL). |
| serum_sodium | Level of sodium in the patient's blood in units (mEq/L). |
| sex | Gender of the patient. (0=Male, 1=Female) |
| smoking | Whether the patient smokes or not. (1=True, 0=False) |
| time | Follow-up period in days. |
| DEATH_EVENT | Indicator of whether the patient experienced a death event or not. (1=True, 0=False) |
'''
st.markdown(markdown_text)
st.markdown('---')
st.subheader('Explorasi Data')
st.markdown('---')
st.write('### Tabel Data Pasien')
# show dataframe
data = pd.read_csv('h8dsft_P1G3_Andikaa_Atmanegara_Putra.csv')
st.dataframe(data)
st.markdown('---')
# visual barplot
st.write('### Histogram Berdasarkan User Input ')
choice = st.selectbox('Pilih Columns: ', ('age', 'anaemia',
'sex', 'DEATH_EVENT',
'creatinine_phosphokinase',
'platelets'))
fig = plt.figure(figsize=(15,5))
sns.histplot(data[choice], bins=30, kde=True)
st.pyplot(fig)
# visual 2
## Categorical Data Plot
st.write('### Categorical Data Ratio')
pilihan_kategori = st.selectbox('Pick Categorical Column : ', ('anaemia', 'diabetes', 'high_blood_pressure',
'sex', 'smoking'))
fig= plt.figure(figsize=(8, 6))
sns.countplot(data=data, x=pilihan_kategori, hue='DEATH_EVENT', palette=['limegreen', 'firebrick'])
plt.xlabel(pilihan_kategori.capitalize())
plt.ylabel('Count')
plt.title(pilihan_kategori.capitalize()+' Ratio')
plt.legend(title='DEATH_EVENT')
st.pyplot(fig)
if __name__ == '__main__':
run()