arad1367's picture
Update app.py
da993cd verified
import pandas as pd
from ydata_profiling import ProfileReport
import gradio as gr
def generate_report(file):
try:
# Read the uploaded CSV file
df = pd.read_csv(file.name)
# Generate the profiling report
report = ProfileReport(df, title="Data Report", explorative=True)
# Render the report as an HTML string
report_html = report.to_html()
return report_html
except Exception as e:
return f"An error occurred: {str(e)}"
# Define the footer HTML content
footer = """
<div style="text-align: center; margin-top: 20px;">
<a href="https://www.linkedin.com/in/pejman-ebrahimi-4a60151a7/" target="_blank">LinkedIn</a> |
<a href="https://github.com/arad1367" target="_blank">GitHub</a> |
<a href="https://arad1367.pythonanywhere.com/" target="_blank">Live demo of my PhD defense</a>
<br>
Made with πŸ’– by Pejman Ebrahimi
</div>
"""
# Create a Gradio interface with custom layout
with gr.Blocks() as app:
gr.Markdown("# Data Report Generator")
# File input section
with gr.Row():
with gr.Column(scale=1):
upload = gr.File(label="Upload your CSV file")
with gr.Column(scale=1):
generate_btn = gr.Button("Generate Report")
# Output section for displaying the report
report_output = gr.HTML()
# Action to generate and display the report
generate_btn.click(fn=generate_report, inputs=upload, outputs=report_output)
# Add the footer to the app
gr.HTML(footer)
# Launch the Gradio app
app.launch()