import pandas as pd import ydata_profiling import gradio as gr from pydantic_settings import BaseSettings from tempfile import NamedTemporaryFile import sweetviz as sv from dataprep.datasets import load_dataset from dataprep.eda import create_report def generate_report(file, type): df = pd.read_csv(file) if file.name.endswith(".csv") else pd.read_excel(file) pandas_html_report =ydata_profiling.ProfileReport(df).to_html() temp_file1 = NamedTemporaryFile(delete=False, suffix=".html") temp_file1.write(pandas_html_report.encode('utf-8')) temp_file1.close() dataprep_report = create_report(df) temp_file2 = NamedTemporaryFile(delete=False, suffix=".html") temp_file2.write(dataprep_report.encode('utf-8')) temp_file2.close() sweetviz_report = sv.analyze(df) temp_file3 = NamedTemporaryFile(delete=False, suffix=".html") temp_file3.write(sweetviz_report.encode('utf-8')) temp_file3.close() return temp_file1.name ,temp_file2.name ,temp_file3.nam with gr.Blocks() as cluster: with gr.Column(): with gr.Row(): file=gr.File(file_types=['.csv', '.xlsx'], label="Upload a CSV or Excel file") btn=gr.Button(value="Download Report") with gr.Row(): gr.HTML(html_content="""

PANDAS REPORT

""") out1=gr.File(label="Download CSV") gr.HTML(html_content="""

DATAPREP REPORT

""") out2=gr.File(label="Download CSV") gr.HTML(html_content="""

SWEETVIZ REPORT

""") out3=gr.File(label="Download CSV") btn.click(generate_report,inputs=[file,type],outputs=[out1,out2,out3]) cluster.launch()