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に変換できました。