- Pythonライブラリ
tabula-py
を利用し、PDFから表を抽出し、CSVやExcel形式で保存する方法やグラフ描画する方法についてメモする※n番煎じ記事
事前準備
-
tabula-pyインストール
pip install tabula-py
※Java1.8以上の環境で動作する
※その他pandasなどのライブラリも必要に応じてインストールする。
実装
-
経済指標情報が記載されているPDFファイルから失業率の表を抽出。
-
抽出結果をCSV,Excelファイルとして保存。
-
抽出結果をグラフ化する。
-
test.py
import tabula
import pandas as pd
import matplotlib.pyplot as plt
# テストPDFデータ:主要経済指標/2.2 失業率
pdf_path = 'https://www.mofa.go.jp/mofaj/files/100053858.pdf'
# PDFから表をDataFrame型のListで抽出
# ※全頁の表を抽出したい場合は、pages='allを指定する
dfs = tabula.read_pdf(pdf_path, stream=True, pages=9)
### CSV保存 ###
dfs[0].to_csv('失業率.csv', index=None)
### Excel保存 ###
dfs[0].to_excel('失業率.xlsx', index=None)
### グラフ描画 ###
# 1. データ整形
# 日米独の2016~2020年のデータを英語表記にして抽出
target = dfs[0].iloc[0:5, 0:4].rename(columns={'Unnamed: 0': '',
'日': 'Japan',
'米': 'USA',
'独': 'Germany'}, index={0: '2016', 1: '2017',
2: '2018', 3: '2019', 4: '2020'})
target = target.drop('', axis=1)
print(target)
# 2. グラフ描画
target.plot(marker="o")
plt.title('Unemployment Rate')
plt.xlabel('Year')
plt.ylabel('Rate')
plt.show()
実行
python test.py
Japan USA Germany
2016 3.1 4.9 4.1
2017 2.8 4.4 3.8
2018 2.4 3.9 3.4
2019 2.4 3.7 3.1
2020 2.8 8.1 3.8