logo

Tabela w Pythonie

Wstęp

Generalnie nie jest konieczne, aby dane, z których korzystamy, były dostępne w formacie CSV lub JSON. Dane można zapisać w formie tabeli w pliku PDF. W najprostszym przypadku możemy skopiować tabelę i wkleić ją do arkusza kalkulacyjnego lub edytora tekstu. Może się jednak zdarzyć, że w tym samym pliku PDF o podobnej strukturze będziemy mogli umieścić więcej niż jedną tabelę. W takich przypadkach musimy skopiować i wkleić każdą z tych tabel osobno, co jest żmudne.

Aby jednak skrócić tę ponurą pracę, Python udostępnia bibliotekę typu open source, znaną również jako tabela-py , która pozwala użytkownikom wyodrębnić więcej niż jedną tabelę w sposób odrębny. W poniższym samouczku poznamy tabulę i jej funkcje.

Co to jest Tabula?

Tabular to podstawowe opakowanie tabula-java, które pozwala użytkownikom wyodrębnić tabelę i konwertować plik PDF bezpośrednio do ramek danych lub JSON za pomocą Język programowania Python . Użytkownik może także wyodrębniać tabele z plików PDF i konwertować je do plików w formacie TSV, CSV lub JSON.

Tabula to narzędzie oparte na aplikacji z graficznym interfejsem użytkownika (GUI); Jednakże, tabela-Java to narzędzie oparte na interfejsie użytkownika wiersza poleceń (CUI). tabula-Java zapewnia powiązania Ruby, R i NodeJS, ale nie dla Pythona. Dlatego twórcy wprowadzili koncepcję tabela-py który zapewnia powiązanie Pythona.

Teraz zrozumiemy, kto używa Tabuli i jak możemy ją zainstalować.

Kto korzysta z Tabuli?

Tabula to potężne narzędzie używane przez organizacje informacyjne każdej wielkości w celu usprawnienia raportowania śledczego. Te Organizacje informacyjne są: The Times of London, ProPublica, Foreign Policy, The New York Times, La Nacion (Argentyna) i St. Paul (MN) Pioneer Press.

Istnieją organizacje oddolne, takie jak SchoolCuts.org, które również korzystają z Tabuli w celu przekształcania nieporęcznych dokumentów w przyjazne dla człowieka zasoby publiczne.

Oprócz powyższego są badacze z innych środowisk, którzy wykorzystują Tabulę do przekształcania swoich raportów PDF w arkusze kalkulacyjne Excel, pliki CSV i pliki w formacie JSON oraz używają go do celów analizowania i aplikacji bazodanowych.

Implementacja Tabuli w Pythonie

Kiedy już omówiliśmy trochę Tabulę, przyjrzyjmy się jej implementacji w Pythonie.

najpiękniejszy uśmiech

Instalacja biblioteki

Od tabela-py jest biblioteką Pythona o otwartym kodzie źródłowym, użyjemy metody pypeć instalator, aby zainstalować bibliotekę.

 $ pip install tabula-py 

Import biblioteki

Po zakończeniu instalacji możemy ją zweryfikować, po prostu importując bibliotekę, jak pokazano poniżej:

 import tabula 

W przypadku, gdy program zwróci plik błąd importowania , zaleca się ponowną instalację pakietu.

The tabela-py Biblioteka udostępnia różne funkcje, takie jak czytanie pliku PDF, czytanie tabeli na określonej stronie pliku PDF, czytanie wielu tabel na tej samej stronie pliku PDF lub konwertowanie plików PDF bezpośrednio do pliku CSV.

Zacznijmy od odczytania pliku PDF

Czytanie pliku PDF

The tabela-py Biblioteka umożliwia użytkownikom odczytywanie plików PDF przy użyciu funkcji znanej jako czytaj_pdf() funkcjonować.

if-else Java

Składnia:

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

Parametry:

Nazwa pliku: The Nazwa pliku parametrem jest nazwa pliku pdf; z którego chcielibyśmy odczytać dane.

Przekonwertujmy następującą tabelę danych PDF na ramkę danych pand.

Nazwa pliku: marksheet_table.py

Strona 1

Nazwa język angielski Fizyka Chemia Biologia Całkowity
A 86 54 65 83 288
B 56 Cztery pięć 80 55 236
C 3. 4 66 73 90 263
D 77 75 46 3. 4 232
I 74 82 55 77 288
F 69 76 82 46 273
G 53 33 29 Cztery pięć 160
H 70 41 67 23 201
I 80 43 88 28 239
J 90 37 Cztery pięć 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 Cztery pięć 87 80 Cztery pięć 257
R 44 66 49 78 237
S 78 39 78 80 275
T 56 54 76 86 273
W 43 90 64 77 274
W 95 88 66 55 304
W 64 67 86 80 297
X 82 56 Cztery pięć 65 248
I 79 65 70 54 268
Z 83 54 40 75 252

Oto przykład podany poniżej, który pokazuje, jak wyodrębnić dane z pliku PDF.

Przykład:

 # 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]) 

Wyjście:

 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 

Wyjaśnienie:

co to jest monitor

W powyższym przykładzie zaimportowaliśmy wymaganą bibliotekę i zdefiniowaliśmy zmienną przechowującą adres pliku danych pdf. Następnie skorzystaliśmy z czytaj_pdf() funkcja odczytu danych z pliku PDF i wydrukowania ich dla użytkowników. W rezultacie tabela danych została pomyślnie odczytana.

Uwaga: użyliśmy strony parametr w funkcji read_pdf(), aby odczytać dane z określonych stron.

Rozważmy inny przykład drukowania tabel z określonej strony, powiedzmy strony nr 2.

Przykład:

 # 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]) 

Wyjście:

 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 

Wyjaśnienie:

W powyższym przykładzie zastosowaliśmy tę samą procedurę, co wcześniej. Jednak przypisaliśmy strony parametr na 2 i wydrukował pierwszą tabelę określonej strony. W rezultacie tabela indeksu zerowego na stronie 2 została pomyślnie wydrukowana.

Teraz przyjrzyjmy się, co się dzieje, gdy na tej samej stronie pliku danych PDF znajduje się więcej niż jedna tabela.

Obsługa wielu tabel na tej samej stronie pliku PDF

Możemy obsłużyć więcej niż jedną tabelę w tym samym miejscu, używając dodatkowego parametru zwanego wiele_stolików. The wiele_stolików Parametr przyjmuje wartość logiczną, dla której czytaj_pdf() funkcja odczytuje wiele tabel jako niezależne tabele, jeśli jest prawdą, lub czyta wiele tabel jako pojedynczą tabelę, jeśli jest fałszywe.

Rozważmy następujący przykład pokazujący, jak czytać wiele tabel jako niezależne tabele.

Przykład:

 # 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]) 

Wyjście:

 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 

Wyjaśnienie:

W poniższym przykładzie ponownie zaimportowaliśmy wymaganą bibliotekę i zdefiniowaliśmy zmienną przechowującą adres pliku PDF. Następnie skorzystaliśmy z czytaj_pdf() funkcję i obejmował wiele_stolików parametr ustawiający go na PRAWDA . Następnie osobno wydrukowaliśmy wiele tabel znajdujących się na stronie 2 pliku PDF.

Rozważmy teraz przykład, aby zrozumieć, jak czytać wiele tabel jako pojedynczą tabelę.

Przykład:

 # 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]) 

Wyjście:

 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 

Wyjaśnienie:

W poniższym przykładzie ustawiliśmy teraz wiele_stolików parametr do FAŁSZ . W rezultacie tabele znajdujące się na stronie 2 są traktowane jako pojedyncza tabela.

postorderowe przechodzenie drzewa binarnego

Konwersja pliku PDF bezpośrednio do pliku CSV

Możemy przekonwertować plik PDF zawierający dane tabelaryczne bezpośrednio na plik CSV za pomocą Przekształć w() metoda w płytka biblioteka.

Składnia:

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

Rozważmy następujący przykład ilustrujący konwersję pliku PDF do pliku CSV.

Przykład:

 # 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.') 

Wyjście:

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

Wyjaśnienie:

W powyższym przykładzie ponownie zaimportowaliśmy wymaganą bibliotekę i zdefiniowaliśmy zmienną zawierającą adres pliku PDF. Następnie skorzystaliśmy z Przekształć w() metoda konwersji pliku PDF na plik CSV i wydrukowania komunikatu o powodzeniu.

Co więcej, możemy również zauważyć, że program zwrócił instrukcję mówiącą, że „strony” argument nie jest określony. Zatem tabela znajdująca się na stronie 1 zostanie domyślnie wyodrębniona.