質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

1回答

676閲覧

Python3 tabulaで抽出したデータをPandasでExcel化する際に全行書き出しされない

tanatomo

総合スコア19

0グッド

0クリップ

投稿2022/06/26 07:20

編集2022/06/27 15:05

お世話になります。
国土交通省のHPにある「全国・主要都市圏における高速道路・主要国道の主な区間の交通量増減」-<1.全国>を集計し、全国の交通量の推移を時系列で把握しようとしています。
リンク内容

1)コードについて
日別資料のPDF(※最下段に画像添付)について、以下の手順を行おうとコードを書きました
①globを使ってフォルダ内のPDFファイルのリンク一覧を作成。
②for文を使って①のファイルそれぞれを処理
②-1 tabulaを使ってPDFからデータ抽出
②-2 pandasを使って②-1のデータをエクセルファイルとして保存

Python

1import pandas as pd 2import tabula 3import glob 4 5file = r"■■抽出元フォルダパス■■*.pdf" 6files = glob.glob(file) 7print(files) 8 9for alfa in files: 10 print(alfa) 11 file_name = alfa[-13:-4] 12 data = tabula.read_pdf(alfa,lattice=True,pages="2") 13 for df in data: 14 display(df) 15 df.to_excel(r"■■格納先フォルダパス■■{}.xlsx".format(file_name),index=False)

2)コードを実行した結果
①リンク一覧は正確に抽出された(格納先フォルダ+ファイル名)
②-1 データとしては一覧が抽出された
イメージ説明
②-2 エクセルを展開すると1行しか保存されていない(PDFの最終行?)
イメージ説明

3)お伺いしたいこと
②-2の処理の際に何か足りないものがあるように思われますがわからず困っております。
教えて頂くことはできますでしょうか。
よろしくお願いいたします。

【日別資料PDF】
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2022/06/26 11:16

コードは「コードの挿入」で記入してください。 > エクセルを展開すると1行しか保存されていない(PDFの最終行?) 上記についてはループ処理内で上書きしているのではないですか?
tanatomo

2022/06/27 15:06 編集

コメントありがとうございます(コードの挿入で記入しました)。 また、ループ処理内での上書きについてご指摘ありがとうございます。 ただ同じサイトの<2.主要都市圏>のPDFだと問題なく全行保存されるコードでして・・・ 二つのPDFの間の差異が何なのかわからないので引き続き調べてみます。
guest

回答1

0

自己解決

解決しました。ありがとうございました。以下、参考までに

①tabulaで抽出した段階でDataframe内に2つのテーブルが存在していることが判明
→data[0]として一つ目のテーブルだけ使用することに
②書き込みの際のfor文は不要であることが判明
→for文は削除

Python

1import pandas as pd 2import tabula 3import glob 4 5file = r"■■抽出元フォルダパス■■*.pdf" 6files = glob.glob(file) 7print(files) 8 9for alfa in files: 10 print(alfa) 11 file_name = alfa[-13:-4] 12 data = tabula.read_pdf(alfa, lattice=True, pages="2") 13 14 data0=data[0] 15 data0.to_excel(r"■■格納先フォルダパス■■{}.xlsx".format(file_name),index=none)

投稿2022/07/09 15:05

tanatomo

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問