import streamlit as st import pandas as pd import plotly.express as px # Title of the App st.title("Smart Data Visualization App") # File Upload Section uploaded_file = st.file_uploader("Upload your Excel file", type=["xlsx", "xls"]) if uploaded_file: try: # Load the Excel file into a DataFrame df = pd.read_excel(uploaded_file) st.write("Data Preview:") st.dataframe(df) # User selects columns to visualize x_axis = st.selectbox("Select X-axis column", df.columns) y_axis = st.multiselect("Select Y-axis column(s)", [col for col in df.columns if col != x_axis]) if x_axis and y_axis: # Determine the best type of graph if df[x_axis].nunique() < len(df[x_axis]) * 0.5: # If the X-axis is categorical, choose a bar chart chart_type = "Bar Chart" fig = px.bar(df, x=x_axis, y=y_axis, barmode="group") elif len(y_axis) == 1: # For single numerical column, plot a line chart chart_type = "Line Chart" fig = px.line(df, x=x_axis, y=y_axis[0]) else: # If multiple numerical columns are selected, use a scatter plot matrix chart_type = "Scatter Matrix" fig = px.scatter_matrix(df, dimensions=y_axis, color=x_axis) # Display the selected chart type and plot st.write(f"Automatically Selected Chart Type: {chart_type}") st.plotly_chart(fig) else: st.info("Please select columns for the X and Y axes to visualize.") except Exception as e: st.error(f"Error processing the file: {e}") else: st.info("Upload an Excel file to get started.") # Footer st.write("---") st.write("Powered by [Streamlit](https://streamlit.io) and [Plotly](https://plotly.com).")