Spaces:
Running
Running
# import the required libraries | |
import streamlit as st # for creating interactive web apps | |
import pandas as pd # for data manipulation and analysis | |
import pygwalker as pyg # for graph-based data analysis | |
from streamlit_option_menu import option_menu # for creating a custom option menu widget | |
from pygwalker.api.streamlit import StreamlitRenderer, init_streamlit_comm # for rendering and communicating with pygwalker graphs | |
from streamlit_extras.switch_page_button import switch_page # for creating a button to switch between pages | |
st.set_page_config(page_title="Data Analysis & Visualization Tool", layout="wide") # set the page title and layout of the web app | |
st.title("Home Page") # display the title of the web app | |
selected = option_menu(menu_title=None, options=["EDA & Visualize", "Dashboard"], orientation="horizontal") # create an option menu widget with two options and a horizontal orientation | |
def main(): # define the main function | |
uploaded_data=st.file_uploader("Upload your data", type=["csv","xlsx","json"]) # create a file uploader widget to let the user upload their data | |
if uploaded_data is not None: # check if the user has uploaded any data | |
dataset=pd.read_csv(uploaded_data) # read the data as a pandas dataframe | |
if selected=="EDA & Visualize" and uploaded_data is not None: | |
# Establish communication between pygwalker and streamlit | |
init_streamlit_comm() | |
# Get an instance of pygwalker's renderer. You should cache this instance to effectively prevent the growth of in-process memory. | |
def get_pyg_renderer(dataset) -> "StreamlitRenderer": | |
df = dataset.copy() | |
# When you need to publish your app to the public, you should set the debug parameter to False to prevent other users from writing to your chart configuration file. | |
return StreamlitRenderer(df, spec="./gw_config.json", debug=False) | |
renderer = get_pyg_renderer(dataset) | |
# Render your data exploration interface. Developers can use it to build charts by drag and drop. | |
renderer.render_explore() | |
elif selected=="Dashboard": | |
switch_page("Dashboard") | |
if __name__=="__main__": | |
main() | |