web-dev-qa-db-ja.com

PDFを開いて、python pandas

PDFを開いて、python pandas=を使用して読み込むか、pandasこの機能?

20
ccsv

これは不可能です。 PDFは印刷用のデータ形式です。そのため、テーブル構造は失われます。運がよければpypdfでテキストを抽出し、以前のテーブル列を推測できます。

5
Daniel

1回限りの場合は、PDFテーブルからデータをテキストファイルにコピーし、フォーマットして(検索と置換、Notepad ++マクロ、スクリプトを使用)、保存できます。 CSVファイルとしてそれをパンダにロードします。

スケーラブルな方法でこれを行う必要がある場合は、次の製品を試してください: http://tabula.technology/ 。まだ使用していないので、どれだけうまく機能するのかはわかりませんが、必要に応じて検討できます。

5
Matija Han

タブラを使用できます https://blog.chezo.uno/tabula-py-extract-table-from-pdf-into-python-dataframe-6c7acfa5f302

from tabula import read_pdf
df = read_pdf('data.pdf')

リンクでもっと見ることができます!

4
Isac Junior

PDF=からテーブルデータをコピーし、Excelファイルに貼り付けます(通常は複数の列ではなく単一の列として貼り付けられます)。次に、FlashFillを使用します(Excel 2016で利用可能、以前のExcelについては不明)バージョン)を使用して、PDFで最初に表示された列にデータを分離します。プロセスは高速で簡単です。次に、Pandasを使用してExcelデータを圧縮します。

1
JMM

私がする時

from tabula import read_pdf
import pandas as pd
df = read_pdf('C:\\Users\\sreeraj.va\\Desktop\\kkrvspnj.pdf')
df.shape
>> (68, 10)

しかし、私のdfは(20000,10)の形状です。ノートブックでは、最初のページのみの形状を示しています。なんでそうなの?

0
Mous

私はCamelothttps://camelot-py.readthedocs.io/en/master/ )でいくつかのテストを行っており、非常にうまくいきます多くの状況で良い。また、デフォルトのパラメーターが機能しない場合は、いくつかのパラメーターを調整してみてください。

これはTabulaに似ていますが、異なるアルゴリズムを使用します(TabulaはPDFでベクターデータを使用し、テーブルの行をラスターします。CamelotはHough Transform)なので、両方を試して、最適なものを見つけることができます。

どちらにもWebバージョンがあるため、いくつかの例を使用して、どちらがアプリケーションに最適かを判断できます。

0
joselquin

tabula-pyという新しいバージョンのtabulaがあります

pip install tabula-py

.read_pdfメソッドは古いバージョンと同じように機能します。ドキュメントはこちらです https://pypi.org/project/tabula-py/

0
Mark