Andika Atmanegara Putra
update
dba73d1
raw
history blame
4.19 kB
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()