Help us understand the problem. What is going on with this article?

PythonでPDFファイルのテーブルデータを読み取る

PDFデータ

世の中の人はPDFが大好きなようで、嫌い嫌いと言っていても扱わざるを得ません。しかし、それに何時間もかけるのはちょっと・・・と思うのが人の常です。PDFの表データをしかないというケースもありますが、そのような際に便利なtabula-pyという超便利なライブラリがあったのでメモしておきます。

https://github.com/chezou/tabula-py

tabulaにかんして

tabulaはPDFの表を抽出するためのJavaのライブラリです。tabula-pyはそのラッパとなっております。そのため、利用するためにはJavaのインストールが必要です。

Javaをインストールした後、下のようにするとPythonのライブラリが利用できます。

$ pip install tabula-py

利用方法

利用方法は簡単で、read_pdf関数を用いるとPDFファイルにある表が読み込めます。事例には厚生労働省の新型コロナウイルス陽性者数(チャーター便帰国者を除く)とPCR検査実施人数を用います。

from tabula import read_pdf

df = read_pdf("https://www.mhlw.go.jp/content/10906000/000618483.pdf")

表の読み込み結果は下のように表示されます。

read_pdf.png

複数表があるため上のようになります。次に取得する表を指定します。

table1.png

上を見るとわかりますが、表はpandasのデータテーブルの形になっています。超便利ですね。このPDFファイルでは2列にデータが分かれているため、表をがっちゃんこする必要があります。この際もデータテーブルなのでpandasのconcat関数を用いることができます。

table2.png

データフレームであるため、可視化も容易です。

table3.png

という感じで、tabula-pyを使うことで、PDFの表データも簡単に取れますね!

OgawaHideyuki
Former Trader and Anallyst. NOW CEO.
https://www.mazarimono.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした