File size: 2,235 Bytes
fdc71fa |
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 |
import streamlit as st # web development
import numpy as np # np mean, np random
import pandas as pd # read csv, df manipulation
import time # to simulate a real time data, time loop
import plotly.express as px # interactive charts
# read csv from a github repo
df = pd.read_csv("https://raw.githubusercontent.com/Lexie88rus/bank-marketing-analysis/master/bank.csv")
st.set_page_config(
page_title = 'Real-Time Data Science Dashboard',
page_icon = 'β
',
layout = 'wide'
)
# dashboard title
st.title("Real-Time / Live Data Science Dashboard")
# top-level filters
job_filter = st.selectbox("Select the Job", pd.unique(df['job']))
# creating a single-element container.
placeholder = st.empty()
# dataframe filter
df = df[df['job']==job_filter]
# near real-time / live feed simulation
for seconds in range(200):
#while True:
df['age_new'] = df['age'] * np.random.choice(range(1,5))
df['balance_new'] = df['balance'] * np.random.choice(range(1,5))
# creating KPIs
avg_age = np.mean(df['age_new'])
count_married = int(df[(df["marital"]=='married')]['marital'].count() + np.random.choice(range(1,30)))
balance = np.mean(df['balance_new'])
with placeholder.container():
# create three columns
kpi1, kpi2, kpi3 = st.columns(3)
# fill in those three columns with respective metrics or KPIs
kpi1.metric(label="Age β³", value=round(avg_age), delta= round(avg_age) - 10)
kpi2.metric(label="Married Count π", value= int(count_married), delta= - 10 + count_married)
kpi3.metric(label="A/C Balance οΌ", value= f"$ {round(balance,2)} ", delta= - round(balance/count_married) * 100)
# create two columns for charts
fig_col1, fig_col2 = st.columns(2)
with fig_col1:
st.markdown("### First Chart")
fig = px.density_heatmap(data_frame=df, y = 'age_new', x = 'marital')
st.write(fig)
with fig_col2:
st.markdown("### Second Chart")
fig2 = px.histogram(data_frame = df, x = 'age_new')
st.write(fig2)
st.markdown("### Detailed Data View")
st.dataframe(df)
time.sleep(1)
#placeholder.empty()
|