キャッシュレス・消費者還元事業事務局審査を通過した加盟店一覧をPDFをCSV変換4

Colaboratoryで公開

PDFダウンロードからTSV変換まで

colab.research.google.com

# -*- coding: utf-8 -*-

import pandas as pd
from tabula import read_pdf

# ページ数入力
max_page = 6360

pages = f"3-{max_page}"

df = read_pdf("kameiten_touroku_list.pdf",
              lattice=True,
              pages=pages,
              java_options=["-Xmx2G"],
              pandas_options={
                  "names":
                  ["No.", "都道府県", "市区町村", "事業所名(屋号)", "業種", "区分", "還元率"]
              })

print(df)

# データの前処理

# 表タイトル除去
df = df[df["No."] != "No."]

# データの整形

# グループ別に分ける
grouped_df = df.groupby((df["No."] == '1').cumsum())

# 固定店舗(EC・通信販売を除く)
df1 = grouped_df.get_group(1).copy()

df1.drop(columns="No.", inplace=True)

# インデックスをリセット
df1.reset_index(inplace=True, drop=True)
df1.index += 1

print(df1)

# EC・通信販売(楽天市場)
df2 = grouped_df.get_group(2).copy()

df2.drop(columns=["No.", "事業所名(屋号)", "業種", "区分", "還元率"], inplace=True)
df2.rename(columns={"都道府県": "事業所名(屋号)", "市区町村": "還元率"}, inplace=True)

# 業種・区分を登録
df2["業種"] = "EC・通信販売"
df2["区分"] = "楽天市場"

# インデックスをリセット
df2.reset_index(inplace=True, drop=True)
df2.index += 1

print(df2)

# EC・通信販売(Yahoo!ショッピング)
df3 = grouped_df.get_group(3).copy()

df3.drop(columns=["No.", "事業所名(屋号)", "業種", "区分", "還元率"], inplace=True)
df3.rename(columns={"都道府県": "事業所名(屋号)", "市区町村": "還元率"}, inplace=True)

# 業種・区分を登録
df3["業種"] = "EC・通信販売"
df3["区分"] = "Yahoo!ショッピング"

# インデックスをリセット
df3.reset_index(inplace=True, drop=True)
df3.index += 1

print(df3)

# EC・通信販売(その他ECサイト)
df4 = grouped_df.get_group(4).copy()

df4.drop(columns=["No.", "事業所名(屋号)", "業種", "区分", "還元率"], inplace=True)
df4.rename(columns={"都道府県": "事業所名(屋号)", "市区町村": "還元率"}, inplace=True)

# 業種・区分を登録
df4["業種"] = "EC・通信販売"
df4["区分"] = "その他ECサイト"

# インデックスをリセット
df4.reset_index(inplace=True, drop=True)
df4.index += 1

print(df4)

# データを連結
df_all = pd.concat([df1, df2, df3, df4], sort=False)

# 還元率の%を除去
df_all["還元率"] = df_all["還元率"].str.rstrip("%").astype(float)

print(df_all)

# TSVファイルに保存
df_all.to_csv('kameiten_touroku_list.tsv', sep='\t')