PDFなどの非構造化データを、分析や機械学習に利用可能な構造化データに変換し、CSVとして保存したい時ってありますよね。
こんな感じの、表形式のPDFファイル「address.pdf」があるとします。
これをCSV形式に変換するために、tabula-pyというライブラリを使用します。
tabulaのインポート
pip install tabula-py
from tabula import read_pdf
df = read_pdf("address.pdf", pages="all")
tabulaは読み込んだPDFをpandasのDataFrame型オブジェクトとして返してくれるので、df[0]のようにインデックスで各表データにアクセスできます。
df[0]
これで、PDFデータの読み込みが完了しました。
ただ、よく見るとPDFをそのまま読み込んだだけなので、不必要なカラムや名称を変更したい行があったりします。
そういった部分を削除・修正して、データを整形していきます。
データの整形
整形したデータを格納する変数「export_data」を用意し、ここにdf[0]を修正した結果を代入していきます。
export_data = df[0]
#不必要なカラムの削除
export_data = export_data.drop("番号", axis=1)
#カラム名の変更
export_data = export_data.rename(columns={"公式サイト":"URL"})
#先頭から5行目までのデータを表示
export_data.head()
dropとrenameを適用しつつ、目的の形にデータを整形していきます。
データを整形できたら、CSV形式で保存します。
export_data.to_csv("address.csv", index=False)
これで、address.pdfをaddress.csvに変換できました。

![df[0].png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F2781928%2Ff16c2bd0-c9c8-972c-eba1-0c50bd25feb9.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=0446105d929a047cb0e75b0f9dd63a24)