logo

테이블 파이썬

소개

일반적으로 우리가 사용하는 데이터가 CSV 또는 JSON 형식으로 제공될 필요는 없습니다. 데이터는 PDF 파일의 테이블 형태로 저장될 수 있습니다. 가장 간단한 방법은 표를 복사하여 스프레드시트나 텍스트 편집기에 붙여넣는 것입니다. 그러나 동일한 PDF에 유사한 구조를 가진 두 개 이상의 테이블이 있을 수도 있습니다. 이러한 경우에는 각 테이블을 별도로 복사하여 붙여넣어야 하므로 작업이 지루해집니다.

그러나 이 지루한 작업을 줄이기 위해 Python은 다음과 같은 오픈 소스 라이브러리를 제공합니다. 테이블 파이 , 이를 통해 사용자는 둘 이상의 테이블을 개별적으로 추출할 수 있습니다. 다음 튜토리얼에서는 tabula와 그 기능에 대해 배웁니다.

타불라란 무엇입니까?

Tabular는 사용자가 테이블을 추출할 수 있도록 하고 다음을 사용하여 PDF 파일을 데이터 프레임 또는 JSON으로 직접 변환할 수 있는 tabula-java의 기본 래퍼입니다. Python 프로그래밍 언어 . 사용자는 PDF에서 테이블을 추출하여 TSV, CSV 또는 JSON 형식 파일로 변환할 수도 있습니다.

Tabula는 GUI(그래픽 사용자 인터페이스) 응용 프로그램을 기반으로 하는 도구입니다. 하지만, 테이블 자바 CUI(명령줄 사용자 인터페이스) 기반 도구입니다. tabula-java는 Ruby, R 및 NodeJS의 바인딩을 제공하지만 Python에는 제공하지 않습니다. 그래서 개발자들은 다음과 같은 개념을 도입했습니다. 테이블 파이 Python 바인딩을 제공합니다.

이제 Tabula를 누가 사용하고 어떻게 설치하는지 알아보겠습니다.

누가 Tabula를 활용하나요?

Tabula는 조사 보도를 강화하기 위해 모든 규모의 뉴스 조직에서 사용되는 강력한 도구입니다. 이것들 언론 기관 The Times of London, ProPublica, Foreign Policy, The New York Times, La Nacion(아르헨티나), St. Paul(MN) Pioneer Press 등이 있습니다.

투박한 문서를 인간 친화적인 공공 자원으로 변환하기 위해 Tabula를 사용하는 SchoolCuts.org와 같은 풀뿌리 조직도 있습니다.

위와 별도로 Tabula를 활용하여 PDF 보고서를 Excel 스프레드시트, CSV 및 JSON 형식 파일로 변환하고 이를 분석 및 데이터베이스 응용 프로그램의 목적으로 사용하는 다른 배경의 연구자들이 있습니다.

Python에서 Tabula 구현

Tabula에 대해 조금 논의한 후에는 Python에서의 구현을 이해해 보겠습니다.

라이브러리 설치

부터 테이블 파이 Python의 오픈 소스 라이브러리입니다. 라이브러리를 설치하려면 설치 프로그램을 사용하세요.

 $ pip install tabula-py 

라이브러리 가져오기

설치가 완료되면 아래와 같이 간단히 라이브러리를 가져와서 확인할 수 있습니다.

 import tabula 

프로그램이 다음을 반환하는 경우 가져오기 오류 , 패키지를 다시 설치하는 것이 좋습니다.

그만큼 테이블 파이 라이브러리는 PDF 파일 읽기, PDF 파일의 특정 페이지에 있는 표 읽기, PDF 파일의 같은 페이지에 있는 여러 표 읽기, PDF 파일을 직접 CSV 파일로 변환하는 등 다양한 기능을 제공합니다.

PDF 파일을 읽는 것부터 시작해 보겠습니다.

PDF 파일 읽기

그만큼 테이블 파이 라이브러리를 사용하면 사용자는 다음과 같은 기능을 사용하여 PDF 파일을 읽을 수 있습니다. read_pdf() 기능.

자바 tostring 메소드

통사론:

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

매개변수:

파일 이름: 그만큼 파일 이름 매개변수는 PDF 파일의 이름입니다. 우리는 데이터를 읽고 싶습니다.

다음 pdf 데이터 테이블을 pandas 데이터 프레임으로 변환해 보겠습니다.

파일 이름: marksheet_table.py

페이지 1

이름 영어 물리학 화학 생물학
86 54 65 83 288
56 넷 다섯 80 55 236
3. 4 66 73 90 263
77 75 46 3. 4 232
그리고 74 82 55 77 288
에프 69 76 82 46 273
G 53 33 29 넷 다섯 160
시간 70 41 67 23 201
80 43 88 28 239
제이 90 37 넷 다섯 71 243
케이 98 55 88 81 322
90 54 67 37 248
87 76 88 54 305
N 86 69 82 66 303
영형 67 74 54 65 260
75 96 53 67 291
넷 다섯 87 80 넷 다섯 257
아르 자형 44 66 49 78 237
에스 78 39 78 80 275
56 54 76 86 273
안에 43 90 64 77 274
안에 95 88 66 55 304
안에 64 67 86 80 297
엑스 82 56 넷 다섯 65 248
그리고 79 65 70 54 268
와 함께 83 54 40 75 252

다음은 PDF에서 데이터를 추출하는 방법을 보여주는 예제입니다.

예:

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

산출:

 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 

설명:

위의 예에서는 필요한 라이브러리를 가져오고 pdf 데이터 파일의 주소를 저장하는 변수를 정의했습니다. 그런 다음 우리는 read_pdf() PDF에서 데이터를 읽고 사용자를 위해 인쇄하는 기능입니다. 결과적으로 데이터 테이블을 성공적으로 읽었습니다.

참고: 우리는 페이지 read_pdf() 함수의 매개변수를 사용하여 지정된 페이지에서 데이터를 읽습니다.

특정 페이지(예: 페이지 번호 2)에서 테이블을 인쇄하는 또 다른 예를 고려해 보겠습니다.

예:

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

산출:

 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 

설명:

위의 예에서는 이전과 동일한 절차를 따랐습니다. 그러나 우리는 페이지 매개변수를 2로 설정하고 지정된 페이지의 첫 번째 테이블을 인쇄했습니다. 결과적으로 2페이지의 인덱스 0 테이블이 성공적으로 인쇄되었습니다.

이제 PDF 데이터 파일의 동일한 페이지에 두 개 이상의 테이블이 있는 경우 어떤 일이 발생하는지 이해해 보겠습니다.

TCP 및 IP 모델

PDF 파일의 동일한 페이지에 있는 여러 테이블 처리

다음과 같은 추가 매개변수를 사용하여 동일한 테이블에서 두 개 이상의 테이블을 처리할 수 있습니다. 다중 테이블. 그만큼 다중 테이블 매개변수는 부울 값을 취합니다. read_pdf() 함수는 true인 경우 여러 테이블을 독립 테이블로 읽거나, false인 경우 여러 테이블을 단일 테이블로 읽습니다.

여러 테이블을 독립 테이블로 읽는 방법을 보여주는 다음 예를 살펴보겠습니다.

예:

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

산출:

 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 

설명:

다음 예에서는 필요한 라이브러리를 다시 가져오고 PDF 파일의 주소를 저장하는 변수를 정의했습니다. 그런 다음 우리는 read_pdf() 기능과 포함 다중 테이블 매개변수로 설정 진실 . 그런 다음 PDF 파일의 2페이지에 있는 여러 테이블을 별도로 인쇄했습니다.

이제 여러 테이블을 단일 테이블로 읽는 방법을 이해하기 위해 예를 살펴보겠습니다.

예:

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

산출:

 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 

설명:

다음 예에서는 이제 다중 테이블 매개변수 거짓 . 결과적으로 2페이지에 있는 테이블은 단일 테이블로 처리됩니다.

PDF 파일을 CSV 파일로 직접 변환

다음의 도움으로 표 형식의 데이터가 포함된 PDF 파일을 CSV 파일로 직접 변환할 수 있습니다. 로 전환하다() 의 방법 도서관.

통사론:

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

PDF 파일을 CSV 파일로 변환하는 방법을 설명하는 다음 예를 살펴보겠습니다.

예:

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

산출:

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

설명:

위의 예에서는 필요한 라이브러리를 다시 가져오고 PDF 파일의 주소가 포함된 변수를 정의했습니다. 그런 다음 우리는 로 전환하다() PDF 파일을 CSV 파일로 변환하고 성공 메시지를 인쇄하는 방법입니다.

더욱이, 우리는 프로그램이 다음과 같은 명령문을 반환했음을 관찰할 수 있습니다. '페이지' 인수가 지정되지 않았습니다. 따라서 기본적으로 1페이지에 있는 테이블이 추출됩니다.