|
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 = """ |
|
<!DOCTYPE html> |
|
<html> |
|
<head> |
|
<title>Data Profile Report</title> |
|
<style> |
|
body { |
|
font-family: Arial, sans-serif; |
|
margin: 0; |
|
padding: 20px; |
|
} |
|
.container { |
|
width: 80%; |
|
margin: auto; |
|
} |
|
</style> |
|
</head> |
|
<body> |
|
<div class="container"> |
|
{content} |
|
</div> |
|
</body> |
|
</html> |
|
""" |
|
|
|
|
|
|
|
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() |
|
|
|
|
|
download_html = f""" |
|
<script> |
|
function downloadReport() {{ |
|
var reportContent = document.getElementById("output").innerHTML; |
|
var filename = "report.html"; |
|
var blob = new Blob([reportContent], {{type: "text/html"}}); |
|
var link = document.createElement("a"); |
|
link.href = URL.createObjectURL(blob); |
|
link.download = filename; |
|
link.click(); |
|
}} |
|
</script> |
|
<button onclick="downloadReport()">Download Report</button> |
|
{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") |
|
), |
|
title="Excel sheet Profiling Report", |
|
live=True, |
|
) |
|
|
|
cluster.launch() |
|
|