Saltar al contenido

Exporte Pandas DataFrame a un archivo PDF usando Python

Si encuentras algún error con tu código o proyecto, recuerda probar siempre en un ambiente de testing antes aplicar el código al trabajo final.

Solución:

Primera tabla de trazado con matplotlib luego generar pdf

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

df = pd.DataFrame(np.random.random((10,3)), columns = ("col 1", "col 2", "col 3"))

#https://stackoverflow.com/questions/32137396/how-do-i-plot-only-a-table-in-matplotlib
fig, ax =plt.subplots(figsize=(12,4))
ax.axis('tight')
ax.axis('off')
the_table = ax.table(cellText=df.values,colLabels=df.columns,loc='center')

#https://stackoverflow.com/questions/4042192/reduce-left-and-right-margins-in-matplotlib-plot
pp = PdfPages("foo.pdf")
pp.savefig(fig, bbox_inches='tight')
pp.close()

referencia:

¿Cómo trazo solo una tabla en Matplotlib?

Reducir los márgenes izquierdo y derecho en el gráfico matplotlib

Así es como lo hago desde la base de datos sqlite usando sqlite3, pandas y pdfkit

import pandas as pd
import pdfkit as pdf
import sqlite3

con=sqlite3.connect("baza.db")

df=pd.read_sql_query("select * from dobit", con)
df.to_html('/home/linux/izvestaj.html')
nazivFajla='/home/linux/pdfPrintOut.pdf'
pdf.from_file('/home/linux/izvestaj.html', nazivFajla)

Bueno, una forma es usar Markdown. Puedes usar df.to_html(). Esto convierte el marco de datos en una tabla html. Desde allí, puede colocar el html generado en un archivo de descuento (.md) (consulte http://daringfireball.net/projects/markdown/basics). A partir de ahí, hay utilidades para convertir Markdown en PDF (https://www.npmjs.com/package/markdown-pdf).

Una herramienta todo en uno para este método es usar el editor de texto Atom (https://atom.io/). Allí puede usar una extensión, buscar “markdown to pdf”, que hará la conversión por usted.

Nota: Al usar to_html() Recientemente tuve que eliminar los caracteres ‘n’ adicionales por alguna razón. elegí usar Atom -> Find -> 'n' -> Replace "".

¡En general, esto debería funcionar!

valoraciones y reseñas

Si sostienes algún recelo o forma de limar nuestro reseña te sugerimos ejecutar un paráfrasis y con deseo lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *