[PYTHON] PDF de la liste des magasins du buffet du petit-déjeuner COCO converti en CSV

introduction

Fichier PDF de la liste du buffet du petit-déjeuner du COCO et conversion au format CSV Pour référence, j'ai converti en PDF avec camelot, les données nettoyées avec Pandas et converties en CSV.

Préparation

apt install python3-tk ghostscript
pip install camelot-py[cv]
pip install pandas

Nettoyage des données

import camelot
import pandas as pd

tables = camelot.read_pdf(
    "https://www.cocos-jpn.co.jp/menu_pdf/bvshoplist.pdf",
    pages="all",
    split_text=True,
    strip_text="\n",
    line_scale=40,
)

#Nom de colonne
columns = ["".join(i) for i in zip(*(tables[0].df.head(2).values))]

dfs = [table.df.iloc[3:].set_axis(columns, axis=1) for table in tables]

#Renuméroter
df = pd.concat(dfs).reset_index(drop=True)
df.index += 1

#Remplacer les caractères vides par des caractères manquants
df.mask(df == "", inplace=True)

#Si la date de mise en œuvre est quotidienne, en semaine, les samedis et dimanches
df["Date de mise en oeuvre"] = df["Date de mise en oeuvre"].where(df["Frais d'utilisation"].isnull(), df["Frais d'utilisation"])

#Compléter les informations quotidiennes du magasin
df.fillna(method="ffill", inplace=True)

#Supprimer la colonne des frais d'utilisation
df.drop("Frais d'utilisation", axis=1, inplace=True)

#Montant TTC
adult = (
    df["adulte"]
    .str.extractall("([0-9]+)")
    .unstack()
    .rename(columns={0: "adulte_Taxe non comprise", 1: "adulte_taxe inclu"}, level=1)
)
adult.columns = adult.columns.droplevel(level=0)
df["adulte"] = adult["adulte_taxe inclu"].astype(int)

#Montant TTC
child = (
    df["Élèves du primaire et plus jeunes"]
    .str.extractall("([0-9]+)")
    .unstack()
    .rename(columns={0: "enfant_Taxe non comprise", 1: "enfant_taxe inclu"}, level=1)
)
child.columns = child.columns.droplevel(level=0)
df["Élèves du primaire et plus jeunes"] = child["enfant_taxe inclu"].astype(int)

#Renommer la colonne d'adresse
df.rename(columns={"Après l'adresse": "adresse de rue"}, inplace=True)

#Normalisation Unicode des adresses, suppression du blanchiment
df["adresse de rue"] = df["adresse de rue"].str.normalize("NFKC").str.replace(" ", "")

df.to_csv("cocos.csv", encoding="utf_8_sig")

référence

Fichier PDF de la liste du buffet du petit-déjeuner du COCO et conversion au format CSV

Recommended Posts

PDF de la liste des magasins du buffet du petit-déjeuner COCO converti en CSV
Convertir le PDF de la liste des concessionnaires de la campagne Go To Eat Hokkaido en CSV
Convertir de PDF en CSV avec pdfplumber
Je souhaite convertir une table convertie en PDF en Python en CSV
Convertir le PDF de la liste des magasins membres Go To EAT dans la préfecture de Kumamoto en CSV
Convertir le PDF de la préfecture de Chiba Aller à la liste des magasins des membres EAT en CSV (commande)
Convertir le PDF de la liste de produits contenant des surfactants efficaces pour le nouveau virus corona en CSV
Convertir le PDF de la liste des magasins membres Go To EAT dans la préfecture de Niigata en CSV
[Python] Suite - Convertir le texte PDF en CSV page par page