logo

Tabel Python

Een introductie

Over het algemeen is het niet nodig dat de gegevens die wij gebruiken beschikbaar zijn in CSV- of JSON-formaat. De gegevens kunnen in de vorm van een tabel in een PDF-bestand worden opgeslagen. In het meest eenvoudige geval kunnen we de tabel kopiëren en in een spreadsheet of een teksteditor plakken. Maar het kan ook zijn dat we meer dan één tabel in dezelfde PDF kunnen hebben met vergelijkbare structuren. In dergelijke gevallen moeten we elk van deze tabellen afzonderlijk kopiëren en plakken, wat het werk vervelend maakt.

Om dit sombere werk te verminderen, biedt Python echter een open-sourcebibliotheek, ook wel bekend als tafel-py , waarmee gebruikers meer dan één tabel afzonderlijk kunnen extraheren. In de volgende tutorial leren we over tabula en hun functies.

Wat is Tabula?

Tabular is een basisverpakking van tabula-java waarmee gebruikers de tabel kunnen extraheren en het PDF-bestand rechtstreeks naar dataframes of JSON kunnen converteren met behulp van Python-programmeertaal . De gebruiker kan ook tabellen uit PDF extraheren en deze converteren naar bestanden in TSV-, CSV- of JSON-formaat.

Tabula is een tool gebaseerd op een grafische gebruikersinterface (GUI); Echter, tabel-java is een tool gebaseerd op de Command-Line User Interface (CUI). tabula-java biedt de bindingen van Ruby , R en NodeJS, maar niet voor Python. Zo introduceerden de ontwikkelaars het concept van tafel-py dat Python-binding biedt.

Laten we nu eens kijken wie Tabula gebruikt en hoe we het kunnen installeren.

Wie gebruikt Tabula?

Tabula is een krachtig hulpmiddel dat door nieuwsorganisaties van elke omvang wordt gebruikt om onderzoeksrapportage mogelijk te maken. Deze Nieuwsorganisaties zijn The Times of London, ProPublica, Foreign Policy, The New York Times, La Nacion (Argentinië) en St. Paul (MN) Pioneer Press.

Java-programmalus

Er zijn Grassroots-organisaties zoals SchoolCuts.org die ook afhankelijk zijn van Tabula om onhandige documenten om te zetten in mensvriendelijke openbare bronnen.

Afgezien van het bovenstaande zijn er onderzoekers met andere achtergronden die Tabula gebruiken om hun PDF-rapporten om te zetten in Excel-spreadsheets, CSV's en JSON-bestanden en deze gebruiken voor analyse- en databasetoepassingen.

Implementatie van Tabula in Python

Nadat we een stukje Tabula hebben besproken, kunnen we de implementatie ervan in Python begrijpen.

Installatie van de bibliotheek

Sinds tafel-py is een open-sourcebibliotheek van Python, we zullen de Pip installer om de bibliotheek te installeren.

 $ pip install tabula-py 

Importeren van de bibliotheek

Zodra de installatie is voltooid, kunnen we deze verifiëren door eenvoudigweg de bibliotheek te importeren, zoals hieronder weergegeven:

 import tabula 

In het geval dat het programma een importfout , wordt aanbevolen het pakket opnieuw te installeren.

De tafel-py bibliotheek biedt verschillende functies, zoals het lezen van een PDF-bestand, het lezen van een tabel op een specifieke pagina van een PDF-bestand, het lezen van meerdere tabellen op dezelfde pagina van een PDF-bestand, of het rechtstreeks converteren van PDF-bestanden naar een CSV-bestand.

Laten we beginnen met het lezen van een PDF-bestand

Een PDF-bestand lezen

De tafel-py bibliotheek stelt zijn gebruikers in staat een PDF-bestand te lezen met behulp van de functie die bekend staat als de lees_pdf() functie.

Syntaxis:

 obj = tabula.read_pdf(filename, args[]) 

Parameters:

bestandsnaam: De bestandsnaam parameter is de naam van het pdf-bestand; waarvan we de gegevens graag willen uitlezen.

Laten we de volgende pdf-gegevenstabel omzetten in Panda's Data Frame.

Bestandsnaam: marksheet_table.py

Pagina 1

Naam Engels Natuurkunde Scheikunde Biologie Totaal
A 86 54 65 83 288
B 56 Vier vijf 80 55 236
C 3. 4 66 73 90 263
D 77 75 46 3. 4 232
EN 74 82 55 77 288
F 69 76 82 46 273
G 53 33 29 Vier vijf 160
H 70 41 67 23 201
I 80 43 88 28 239
J 90 37 Vier vijf 71 243
K 98 55 88 81 322
L 90 54 67 37 248
M 87 76 88 54 305
N 86 69 82 66 303
O 67 74 54 65 260
P 75 96 53 67 291
Q Vier vijf 87 80 Vier vijf 257
R 44 66 49 78 237
S 78 39 78 80 275
T 56 54 76 86 273
IN 43 90 64 77 274
IN 95 88 66 55 304
IN 64 67 86 80 297
X 82 56 Vier vijf 65 248
EN 79 65 70 54 268
MET 83 54 40 75 252

Hieronder ziet u een voorbeeld dat laat zien hoe u de gegevens uit de pdf kunt extraheren.

Voorbeeld:

 # importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 1) # printing the table print(mytable[0]) 

Uitgang:

 Name English Physics Chemistry Biology Total 0 A 86 54 65 83 288 1 B 56 45 80 55 236 2 C 34 66 73 90 263 3 D 77 75 46 34 232 4 E 74 82 55 77 288 5 F 69 76 82 46 273 6 G 53 33 29 45 160 7 H 70 41 67 23 201 8 I 80 43 88 28 239 9 J 90 37 45 71 243 10 K 98 55 88 81 322 11 L 90 54 67 37 248 12 M 87 76 88 54 305 13 N 86 69 82 66 303 14 O 67 74 54 65 260 15 P 75 96 53 67 291 16 Q 45 87 80 45 257 17 R 44 66 49 78 237 18 S 78 39 78 80 275 19 T 56 54 77 86 273 20 U 43 90 64 77 274 21 V 95 88 66 55 304 22 W 64 67 86 80 297 23 X 82 56 45 65 248 24 Y 79 65 70 54 268 25 Z 83 54 40 75 252 

Uitleg:

In het bovenstaande voorbeeld hebben we de vereiste bibliotheek geïmporteerd en een variabele gedefinieerd die het adres van het pdf-gegevensbestand opslaat. Wij hebben toen gebruik gemaakt van de lees_pdf() functie om de gegevens uit de pdf te lezen en af ​​te drukken voor de gebruikers. Als gevolg hiervan is de gegevenstabel met succes gelezen.

Let op: Wij hebben gebruik gemaakt van de Pagina's parameter in de read_pdf() functie om de gegevens van de opgegeven pagina('s) te lezen.

Laten we een ander voorbeeld bekijken om de tabellen vanaf een specifieke pagina af te drukken, bijvoorbeeld paginanummer 2.

Voorbeeld:

 # importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2) # printing the table print(mytable[0]) 

Uitgang:

 Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252 

Uitleg:

In het bovenstaande voorbeeld hebben we dezelfde procedure gevolgd als eerder. Wij hebben echter de opdracht gegeven Pagina's parameter op 2 gezet en de eerste tabel van de opgegeven pagina afgedrukt. Als gevolg hiervan is de tabel met index nul op pagina 2 met succes afgedrukt.

Laten we nu begrijpen wat er gebeurt als er meer dan één tabel op dezelfde pagina van een PDF-gegevensbestand staat.

selecteer als

Meerdere tabellen op dezelfde pagina van een PDF-bestand verwerken

We kunnen meer dan één tabel op dezelfde manier verwerken met behulp van een extra parameter die bekend staat als meerdere_tabellen. De meerdere_tabellen parameter heeft een Booleaanse waarde waarvoor de lees_pdf() functie leest meerdere tabellen als onafhankelijke tabellen als deze waar zijn, of leest meerdere tabellen als één enkele tabel als deze niet waar zijn.

Laten we het volgende voorbeeld bekijken, waarin wordt gedemonstreerd hoe meerdere tabellen als onafhankelijke tabellen kunnen worden gelezen.

Voorbeeld:

 # importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2, multiple_tables = True) # printing the table print(mytable[0]) print(mytable[1]) 

Uitgang:

 Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252 Name Position 0 K I 1 M II 2 V III 3 N IV 4 W V 

Uitleg:

In het volgende voorbeeld hebben we opnieuw de vereiste bibliotheek geïmporteerd en de variabele gedefinieerd die het adres van het PDF-bestand opslaat. Wij hebben toen gebruik gemaakt van de lees_pdf() functie en omvatte de meerdere_tabellen parameter waarop deze is ingesteld WAAR . Vervolgens hebben we de meerdere tabellen op pagina 2 van het PDF-bestand afzonderlijk afgedrukt.

Laten we nu een voorbeeld bekijken om te begrijpen hoe u meerdere tabellen als één tabel kunt lezen.

Voorbeeld:

 # importing the library import tabula # address of the file myfile = 'marksheet_table.pdf' # using the read_pdf() function mytable = tabula.read_pdf(myfile, pages = 2, multiple_tables = False) # printing the table print(mytable[0]) 

Uitgang:

 Name Final Scores 0 A 288 1 B 236 2 C 263 3 D 232 4 E 288 5 F 273 6 G 160 7 H 201 8 I 239 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 9 J 243 10 K 322 11 L 248 12 M 305 13 N 303 14 O 260 15 P 291 16 Q 257 17 R 237 18 S 275 19 T 273 20 U 274 21 V 304 22 W 297 23 X 248 24 Y 268 25 Z 252 26 Name Position 27 K I 28 M II 29 V III 30 N IV 31 W V 

Uitleg:

In het volgende voorbeeld hebben we nu de meerdere_tabellen parameter aan Vals . Als gevolg hiervan worden de tabellen op pagina 2 als één tabel behandeld.

PDF-bestand rechtstreeks naar een CSV-bestand converteren

We kunnen een PDF-bestand dat tabelgegevens bevat, rechtstreeks naar een CSV-bestand converteren met behulp van de convert_into() methode in de tabel bibliotheek.

Syntaxis:

 tabula.convert_into('filename.pdf', 'newfilename.csv', args[]) 

Laten we het volgende voorbeeld bekijken dat de conversie van het PDF-bestand naar CSV-bestand illustreert.

Voorbeeld:

 # importing the library import tabula # address of the file myfile = 'marksheettable.pdf' # using the read_pdf() function tabula.convert_into(myfile, 'marksheet.csv') print('The PDF file has been converted successfully.') 

Uitgang:

 'pages' argument isn't specified.Will extract only from page 1 by default. The PDF file has been converted successfully. 

Uitleg:

In het bovenstaande voorbeeld hebben we opnieuw de vereiste bibliotheek geïmporteerd en de variabele gedefinieerd die het adres van het PDF-bestand bevat. Wij hebben toen gebruik gemaakt van de convert_into() methode om het PDF-bestand naar het CSV-bestand te converteren en een succesbericht af te drukken.

Bovendien kunnen we ook waarnemen dat het programma een verklaring retourneerde waarin stond dat de 'Pagina's' argument is niet gespecificeerd. De tabel op pagina 1 wordt dus standaard geëxtraheerd.