欢迎访问宙启技术站
智能推送

利用reportlab.platypus和Pandas生成可视化的PDF报告

发布时间:2023-12-18 23:33:43

将Pandas和reportlab.platypus结合使用可以生成具有数据可视化的漂亮PDF报告。Pandas是Python中一个流行的数据分析库,而reportlab.platypus则是用于生成PDF文档的库。

以下是一个生成PDF报告的简单示例,该报告包含了一个简单的数据表格和一个条形图。

首先,我们需要安装Pandas和reportlab库。可以使用以下命令来安装它们:

pip install pandas reportlab

现在,让我们开始创建一个简单的报告。首先,导入必要的库:

import pandas as pd

from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.units import inch
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.barcharts import VerticalBarChart

我们使用Pandas从数据源中获取数据:

# 创建一个示例数据集
data = {'Name': ['Joe', 'Mark', 'Emily', 'Eric'],
        'Age': [25, 30, 35, 40],
        'Salary': [50000, 60000, 70000, 80000]}

# 将数据转换为DataFrame
df = pd.DataFrame(data)

接下来,我们创建一个reportlab.platypus类的实例,以生成PDF文件。

# 创建PDF文件
pdf_file = "report.pdf"
pdf = SimpleDocTemplate(pdf_file, pagesize=letter)
flow = []

然后,我们创建一个表格来显示数据:

# 将DataFrame转换为二维列表
data_values = [df.columns.values.tolist()] + df.values.tolist()

# 创建表格并设置样式
t = Table(data_values)
t.setStyle(TableStyle([('BACKGROUND', (0, 0), (-1, 0), colors.grey),
                       ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
                       ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                       ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
                       ('FONTSIZE', (0, 0), (-1, 0), 14),
                       ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
                       ('BACKGROUND', (0, 1), (-1, -1), colors.beige),
                       ('TEXTCOLOR', (0, 1), (-1, -1), colors.black),
                       ('FONTNAME', (0, 1), (-1, -1), 'Helvetica'),
                       ('FONTSIZE', (0, 1), (-1, -1), 12),
                       ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                       ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
                       ('BOTTOMPADDING', (0, 1), (-1, -1), 6),
                       ('BACKGROUND', (0, 0), (-1, 1), colors.grey),
                       ('GRID', (0, 0), (-1, -1), 1, colors.black)]))
flow.append(t)

现在,让我们添加一个条形图来可视化数据:

# 创建一个条形图
d = Drawing(400, 200)
bar = VerticalBarChart()
bar.x = 50
bar.y = 65
bar.width = 300
bar.height = 125
bar.data = [(25, 30, 35, 40)]
bar.strokeColor = None
bar.fillColor = colors.blue

d.add(bar)
flow.append(d)

最后,我们将flow列表添加到PDF文件中,并调用build方法生成PDF文件:

# 将flow列表添加到PDF文件中
pdf.build(flow)

运行上述代码后,将生成一个名为report.pdf的PDF文件,其中包含了我们的数据表格和条形图。

使用Pandas和reportlab.platypus库生成PDF报告可以帮助我们将数据可视化并以漂亮的方式呈现给用户。这个例子只是一个简单的入门示例,你可以根据自己的需求进行更多的定制化。希望这个例子对你有所帮助!