Spaces:
Runtime error
Runtime error
import streamlit as st | |
import pandas as pd | |
import time | |
st.header("Plotting Time Series Data") | |
st.markdown("Users can load their time-series data in **.csv** format and select a particular feature and plot-type.\ | |
Go ahead and use the sidebar on the left to upload your data files to start visualizing it!") | |
tab1, tab2 = st.tabs(["Main", "Demo"]) | |
# Load and config | |
with st.sidebar: | |
plot = st.radio("Select the kind of visualization:",('Feature collection', 'Users comparison', 'Data distribution')) | |
file = st.file_uploader("Load CSV file", accept_multiple_files = False) | |
if file: | |
df_p = pd.read_csv(file, index_col = False) | |
# df_p.index = df_p['Unnamed: 0'].tolist() | |
try: | |
del df_p['Unnamed: 0'] | |
except KeyError: | |
pass | |
if 'df_p' not in st.session_state: | |
st.session_state['df_p'] = df_p | |
st.success("Your data has been successfully loaded! π€") | |
with tab1: | |
if 'df_p' in st.session_state: | |
st.caption("Your uploaded data:") | |
st.dataframe(st.session_state.df_p) | |
elif 'df_right' in st.session_state: | |
st.caption("Your data:") | |
st.dataframe(st.session_state.df_right) | |
if 'df_p' not in st.session_state: | |
df_p = st.session_state.df_right | |
st.session_state['df_p'] = df_p | |
else: | |
df_p = st.session_state.df_right | |
st.session_state.df_p = df_p | |
else: | |
st.caption("Upload your data using the sidebar and select a plot-type to start :sunglasses:") | |
df_base = st.session_state.df_p if 'df_p' in st.session_state else pd.DataFrame() | |
n = len(df_base) | |
col1, col2 = st.columns(2) | |
# Prepare data | |
if not df_base.empty and n: | |
with col1: | |
st.info(f"Your data has {n} samples.") | |
slider_range = list(range(n)) | |
n_plot = st.slider("How many samples do you want to plot in the same graph", slider_range[0]+1, slider_range[-1]+1, 5) | |
plot_it = st.button("Plot now! π") | |
if plot_it: | |
st.snow() | |
feature = "relative_pupil_dilation" | |
df_plot = df_base.head(n_plot) | |
try: | |
df_plot = [ini_list.strip('][').split(',') for ini_list in df_plot[feature]] | |
except AttributeError: | |
df_plot = [ini_list for ini_list in df_plot[feature]] | |
df_plot = pd.DataFrame(df_plot) | |
df_plot.columns = [str(column) for column in range(len(df_plot.columns))] | |
if 'df_plot' not in st.session_state: | |
st.session_state['df_plot'] = df_plot | |
# Draw plot | |
if 'df_plot' in st.session_state: | |
with st.spinner(f"Drawing plot to visualize {plot.lower()}"): | |
st.caption("Your visualization:") | |
df_plot_t = df_plot.copy(deep=True).transpose() | |
df_plot_t.columns = [str(column) for column in range(len(df_plot_t.columns))] | |
st.line_chart(df_plot_t, y=list(df_plot_t.columns), height=450, width=600) | |
# st.dataframe(df_plot_t) | |
with st.expander("See explanation"): | |
st.caption("The chart above shows...") | |
elif df_base.empty and file: | |
st.warning("Consider running outlier detection to clean your data!", icon="β οΈ") | |
# st.caption(f"developer:: session_state keys: {list(st.session_state.keys())}") | |
# st.caption(f"what is the meaning of the x-axis, add to explanation") | |
# st.caption(f"add sample data demo in another tab") | |
# demo | |
with tab2: | |
st.caption("demo under construction π§") |