Soumen's picture
Upload 5 files
2db80a1 verified
# 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.
@st.cache_resource
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()