Я хочу объединить библиотеки matplotlib и reportlab для создания отчета в формате PDF. Я специально хочу отобразить фрейм данных в этом файле PDF. После некоторых исследований мне удалось получить этот код:
import numpy as np
import pandas as pd
from reportlab.platypus import SimpleDocTemplate
from reportlab.lib.pagesizes import letter
from reportlab.platypus import Table
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar','foo', 'bar', 'foo', 'foo'], 'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'], 'C': np.random.randn(8),'D': np.random.randn(8)})
data = df.groupby('A').sum()
print(data)
filename = 'dataframe.pdf'
pdf = SimpleDocTemplate(filename, pagesize = letter)
lista = [data.columns[:,].values.astype(str).tolist()] + data.values.tolist()
table = Table(lista)
#PDF construction
elems = []
elems.append(table)
pdf.build(elems)
Я получил этот результат в формате PDF: https://zupimages.net/viewer.php?id=20 / 10 / t22g.png
I найти рендеринг не страшно, тем более что он не соответствует названию осей слева. Я понимаю, что он должен быть помещен в переменную lista, но я не вижу синтаксиса.
Другим решением было бы экспортировать кадр данных в html и преобразовать его в png. для этого я установил библиотеку pypando c, но невозможно найти в inte rnet код, который конвертировал бы html в png ...