如何将 pandas 数据框从 PdfPages 保存到现有 pdf 中

Jan*_*lly 5 python pdf pdf-generation matplotlib pandas

我创建了一个 pdf 文件,保存了使用 Matplotlib 创建的几张图。

我执行了以下操作来创建 pdf

from matplotlib.backends.backend_pdf import PdfPages
report = PdfPages('report.pdf')
Run Code Online (Sandbox Code Playgroud)

report.savefig()创建情节后,我每次都会这样做。但是,我也想将生成的数据帧输出到 Pdf 中。本质上,我想要一份包含绘图和查询数据框的报告,所有这些都在一个地方。是否可以使用 PdfPages 创建的数据框向 Pdf 添加数据框,如果可以,我该怎么做?如果没有,是否有另一种方法可以允许绘图和数据框位于同一个位置(无需保存各个组件并将它们拼凑在一起)?希望有任何建议和例子。谢谢!

tel*_*tel 5

只需创建表格图,然后保存即可。给定一个数据框,例如:

import pandas as pd

df = pd.DataFrame()
df['Animal'] = ['Cow', 'Bear']
df['Weight'] = [250, 450]
df['Favorite'] = ['Grass', 'Honey']
df['Least Favorite'] = ['Meat', 'Leaves']
Run Code Online (Sandbox Code Playgroud)

看起来像:

  Animal  Weight Favorite Least Favorite
0    Cow     250    Grass           Meat
1   Bear     450    Honey         Leaves
Run Code Online (Sandbox Code Playgroud)

你可以像这样绘制它的表格版本:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(9,2))
ax = plt.subplot(111)
ax.axis('off')
ax.table(cellText=df.values, colLabels=df.columns, bbox=[0,0,1,1])
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

您可以通过向单元格添加一些背景颜色来使表格图的样式更好一些:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(9,2))
ax=plt.subplot(111)
ax.axis('off')
c = df.shape[1]
ax.table(cellText=np.vstack([df.columns, df.values]), cellColours=[['lightgray']*c] + [['none']*c]*2, bbox=[0,0,1,1])
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

请参阅此正在进行的线程(所有这些示例均取自该线程)以获取更多想法/变体。

编辑

我想到您可能想在同一个图形上绘制图像和表格。您可以这样做以获得如下结果:

在此输入图像描述

这是该图像来源的教程的链接,其中有一些示例代码可以帮助您入门。