Das Arbeiten mit PDF-Dateien in Python ist schwierig.
In einigen Fällen ist die Tabelle in das PDF eingebettet.
Zum Beispiel
Viele Tabellendaten sind in Ergebnisbericht zur Implementierung des Zeneiren Stress Check Service 2018 eingebettet. Ich werde.
Angenommen, Sie möchten [Tabelle 14 Prozentsatz der stark belasteten Personen nach Branchen] auf Seite 40 der Datei extrahieren.
Wählen Sie diese Tabelle aus, kopieren Sie sie und fügen Sie sie in Excel ein.
Kopieren und in Excel einfügen.
Oh? Es funktioniert nicht. Alle Daten werden in einer Zelle aufgelistet.
Tatsächlich können Sie Python verwenden, um die Tabellen in dieser PDF-Datei relativ einfach in CSV oder Excel zu konvertieren.
Es gibt zwei Schritte zum Konvertieren einer Tabelle in einer PDF-Datei in CSV oder Excel mit Python.
Schritt 1. Extrahieren Sie die Tabelle aus PDF als Pandas DataFrame Schritt 2. Schreiben Sie den DataFrame als CSV oder Excel
Schauen wir sie uns der Reihe nach an.
Um eine PDF-Tabelle als DataFrame zu extrahieren, verwenden wir ein Modul namens ** tabula **.
Ich denke, dass es viele Leute gibt, die keine Tabula installiert haben.
pip install tabula-py
Installieren mit.
Darüber hinaus wird diese Tabelle unter Java ausgeführt, sodass Sie auch Java installieren müssen.
Nachdem die Tabula fertig ist, importieren Sie Pandas und Tabula.
python
import pandas as pd
import tabula
So extrahieren Sie eine Tabelle aus einem PDF
tabula.read_pdf("xxx.pdf", lattice=True, pages='xxxx')
Verwenden Sie die Funktion.
Schreiben Sie in "xxx.pdf" den Pfad der PDF-Datei, die Sie lesen möchten.
--lattice = True
ist eine Option zum Bestimmen von Zellen anhand von Tabellenrändern.
Wenn die Tabelle, die Sie extrahieren möchten, durch einen Rahmen getrennt ist, geben Sie lattice = True an.
--pages
gibt die Seiten an, die Sie laden möchten.
Wenn Sie nur die 40. Seite lesen möchten, geben Sie als "pages =" 40 "an.
Wenn Sie die Seiten 40-45 laden möchten, geben Sie als "pages = '40 -45'` an.
Wenn Sie alle Seiten laden möchten, können Sie "pages =" all "verwenden.
Die Funktion gibt eine Liste von pandas.DataFrame zurück. Wenn Sie mehrere Tabellen haben, können Sie diese Liste in der Reihenfolge mit einer for-Anweisung abrufen.
Lesen Sie nun die Tabelle auf Seite 40 des "Ergebnisberichts zur Implementierung des Zeneiren Stress Check Service 2018".
python
# lattice=True, um die Zelle anhand der Tabellenachse zu bestimmen
dfs = tabula.read_pdf("Ergebnisbericht zur Implementierung des Zeneiren Stress Check Service 2018.pdf", lattice=True, pages = '40')
for df in dfs:
display(df)
Es ist seltsam, dass \ r
enthalten ist, weil der Spaltenname in der Zelle gebrochen wurde, aber der Inhalt der Tabelle gut extrahiert werden kann.
Korrigieren wir vorerst die Spaltennamen richtig.
Sie können den Spaltennamen mit df.rename (column = {'ursprünglicher Spaltenname': 'geänderter Spaltenname'})
ändern.
Wenn Sie mehrere Spaltennamen ändern, ist es in Ordnung, wenn Sie den "ursprünglichen Spaltennamen": "den geänderten Spaltennamen" verbinden, indem Sie sie durch ein Komma trennen.
python
df = df.rename(columns={'Viel Stress\Anzahl der Personen': 'Viel Stressス者数', 'Viel Stressス\Prozentsatz der Menschen': 'Viel Stressス者の割合'})
Ursprünglich hat Pandas die Funktion, DataFrame als CSV oder Excel zu schreiben.
Speichern als csv: df.to_csv (" filename.csv ", index = None)
Als Excel speichern: df.to_excel (" filename.xlsx ", index = None)
Index = None
ist eine Option, um zu verhindern, dass der Index von DataFrame geschrieben wird.Abschließend werde ich diesen Code zusammenfassen.
pyhon
import pandas as pd
import tabula
# lattice=True, um die Zelle anhand der Tabellenachse zu bestimmen
dfs = tabula.read_pdf("Ergebnisbericht zur Implementierung des Zeneiren Stress Check Service 2018.pdf", lattice=True, pages = '40')
#Überprüfen Sie, ob Sie die PDF-Tabelle ordnungsgemäß erhalten können
for df in dfs:
display(df)
# csv/Als Excel speichern(Diesmal dfs[0]nur)
df = dfs[0].rename(columns={'Viel Stress\Anzahl der Personen': 'Viel Stressス者数', 'Viel Stressス\Prozentsatz der Menschen': 'Viel Stressス者の割合'})
df.to_csv("PDF-Tabelle.csv", index=None) # csv
df.to_excel("PDF-Tabelle.xlsx", index=None) # Excel
Hier sind die anderen Automatisierungsserien, die ich geschrieben habe. Bei Interesse bitte!
[Automatisierung] Lesen Sie Word-Dokumente mit Python https://qiita.com/konitech913/items/c30236bdf47775535e2f
[Automatisierung] Konvertieren Sie Python-Code in eine exe-Datei https://qiita.com/konitech913/items/6259f13e057bc25ebc23
[Automatisierung] Senden Sie Outlook-E-Mails mit Python https://qiita.com/konitech913/items/51867dbe24a2a4272bb6
[Automatisierung] Lesen Sie Outlook-E-Mails mit Python https://qiita.com/konitech913/items/8a285522b0c118d5f905
[Automatisierung] Lesen Sie E-Mails (Nachrichtendatei) mit Python https://qiita.com/konitech913/items/fa0cf66aad27d16258c0
[Automatisierung] Bedienen Sie die Zwischenablage mit Python und fügen Sie die Tabelle in Excel ein https://qiita.com/konitech913/items/83975332e395a387eace
Recommended Posts