import pandas as pd import ydata_profiling import gradio as gr from pydantic_settings import BaseSettings import sweetviz as sv def generate_report(file,type): df = pd.read_csv(file) if file.name.endswith(".csv") else pd.read_excel(file) if type == "pandas profiling": return ydata_profiling.ProfileReport(df).to_html() elif type == "sweetviz": return sv.analyze(df).show_html(open_browser=True, layout='widescreen', scale=None) # Custom HTML template for styling the report output custom_html = """ Data Profile Report
{content}
""" def generate_report(file, type): df = pd.read_csv(file) if file.name.endswith(".csv") else pd.read_excel(file) if type == "pandas profiling": html_report =ydata_profiling.ProfileReport(df).to_html() # Add JavaScript code for download functionality download_html = f""" {html_report} """ return download_html cluster = gr.Interface( fn=generate_report, inputs=[gr.File(file_types=['.csv', '.xlsx'], label="Upload a CSV or Excel file"), gr.Radio(["pandas profiling", "sweetviz"], label="Type of report", info="Explore the data")], css=""" # Output container styling for better visual presentation (optional) .output-container { padding: 10px; } """, layout=gr.Column( gr.HTML(label="Data Profile Report", html_content=download_html), gr.Button(value="Download Report", type="submit") # Optional: Replace button within HTML if needed ), title="Excel sheet Profiling Report", live=True, ) cluster.launch()