import pandas as pd
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet
--------- STEP 1: READ DATA ----------
data = pd.read_csv("data.csv")
Basic analysis
average_score = data["Score"].mean()
highest_score = data["Score"].max()
lowest_score = data["Score"].min()
--------- STEP 2: CREATE PDF ----------
pdf_file = "report.pdf"
doc = SimpleDocTemplate(pdf_file, pagesize=A4)
styles = getSampleStyleSheet()
elements = []
Title
title = Paragraph("Automated Report", styles['Title'])
elements.append(title)
elements.append(Spacer(1, 20))
Summary
summary = f"""
This report analyzes student scores.
Average Score: {average_score:.2f}
Highest Score: {highest_score}
Lowest Score: {lowest_score}
"""
elements.append(Paragraph(summary, styles['Normal']))
elements.append(Spacer(1, 20))
Table
table_data = [list(data.columns)] + data.values.tolist()
table = Table(table_data)
table.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), colors.grey),
("TEXTCOLOR", (0, 0), (-1, 0), colors.whitesmoke),
("ALIGN", (0, 0), (-1, -1), "CENTER"),
("GRID", (0, 0), (-1, -1), 1, colors.black),
("BACKGROUND", (0, 1), (-1, -1), colors.beige),
]))
elements.append(table)
Build PDF
doc.build(elements)
print(f"PDF report generated: {pdf_file}")
import pandas as pd
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet
--------- STEP 1: READ DATA ----------
data = pd.read_csv("data.csv")
Basic analysis
average_score = data["Score"].mean()
highest_score = data["Score"].max()
lowest_score = data["Score"].min()
--------- STEP 2: CREATE PDF ----------
pdf_file = "report.pdf"
doc = SimpleDocTemplate(pdf_file, pagesize=A4)
styles = getSampleStyleSheet()
elements = []
Title
title = Paragraph("Automated Report", styles['Title'])
elements.append(title)
elements.append(Spacer(1, 20))
Summary
summary = f"""
This report analyzes student scores.
Average Score: {average_score:.2f}
Highest Score: {highest_score}
Lowest Score: {lowest_score}
"""
elements.append(Paragraph(summary, styles['Normal']))
elements.append(Spacer(1, 20))
Table
table_data = [list(data.columns)] + data.values.tolist()
table = Table(table_data)
table.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), colors.grey),
("TEXTCOLOR", (0, 0), (-1, 0), colors.whitesmoke),
("ALIGN", (0, 0), (-1, -1), "CENTER"),
("GRID", (0, 0), (-1, -1), 1, colors.black),
("BACKGROUND", (0, 1), (-1, -1), colors.beige),
]))
elements.append(table)
Build PDF
doc.build(elements)
print(f"PDF report generated: {pdf_file}")