Bellmark Education Grant Foundation État de la réception hebdomadaire Bellmark Agrégé à partir du PDF par préfecture / ville / quartier / ville / village
Actuellement, Webbellmark a également commencé, et vous pouvez accéder à votre boutique préférée depuis le site webbellmark et collecter des points de repère en fonction de vos achats.
Vous pouvez également utiliser Jaran et Rakuten Travel, de sorte que vous pouvez soutenir sans vous payer en l'utilisant simplement avant de postuler à Go To Travel.
Ce processus regroupe ce qui se trouve dans la plage limite de la coordonnée X et de la coordonnée Y à la position de nombreuses coordonnées. J'ajuste ceux avec de nombreux caractères et deux colonnes, et ceux qui sont légèrement désalignés
def snap_adjustment(s, limit=5):
count = s.value_counts().sort_index()
index = 0
value = 0
for i, v in count.items():
if (i - index) < limit:
if v > value:
s = s.replace(index, i)
index = i
value = v
else:
s = s.replace(i, index)
else:
index = i
value = v
return s
import pathlib
import time
import pandas as pd
import pdfplumber
import requests
from bs4 import BeautifulSoup
def fetch_file(url, dir="."):
r = requests.get(url)
r.raise_for_status()
p = pathlib.Path(dir, pathlib.PurePath(url).name)
p.parent.mkdir(parents=True, exist_ok=True)
with p.open(mode="wb") as fw:
fw.write(r.content)
return p
def snap_adjustment(s, limit=5):
count = s.value_counts().sort_index()
index = 0
value = 0
for i, v in count.items():
if (i - index) < limit:
if v > value:
s = s.replace(index, i)
index = i
value = v
else:
s = s.replace(i, index)
else:
index = i
value = v
return s
url = "https://www.bellmark.or.jp/collect/accept.htm"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
}
r = requests.get(url, headers=headers)
r.raise_for_status()
soup = BeautifulSoup(r.content, "html.parser")
links = {
href.get("href")
for href in soup.select("div.cal-process > div.cal-row-date > div > a")
}
dfs = []
for link in links:
p = fetch_file(link)
with pdfplumber.open(p) as pdf:
for page in pdf.pages:
crop = page.within_bbox((0, 65, page.width, page.height - 40))
df_tmp = (
pd.DataFrame(crop.extract_words(keep_blank_chars=True))
.astype({"x0": float, "x1": float, "top": float, "bottom": float})
.sort_values(["top", "x0"])
)
df_tmp["top"] = snap_adjustment(df_tmp["top"], 6)
df_tmp["x0"] = snap_adjustment(df_tmp["x0"])
table = (
df_tmp.pivot_table(
index=["top"],
columns="x0",
values="text",
aggfunc=lambda x: "".join(str(v) for v in x),
)
).values
df = pd.DataFrame(table, columns=["Préfectures", "ville", "Ward, ville, village", "Groupes participants", "Date de réception"])
dfs.append(df)
time.sleep(3)
df = pd.concat(dfs)
df
df["Municipalité"] = df["ville"].fillna("") + df["Ward, ville, village"].fillna("")
df1 = df.reindex(columns=["Préfectures", "Municipalité", "Groupes participants", "Date de réception"])
df1.to_csv("data.csv")
df1
import japanize_matplotlib
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams["figure.dpi"] = 200
df1["Préfectures"].value_counts(ascending=True).plot.barh(figsize=(5, 10))
#Enregistrer le graphique
plt.savefig("01.png ", dpi=200, bbox_inches="tight")
plt.show()
s = df1.groupby(["Préfectures", "Municipalité"])["Municipalité"].count().sort_values(ascending=True)
s.tail(50).plot.barh(figsize=(5, 10))
#Enregistrer le graphique
plt.savefig("02.png ", dpi=200, bbox_inches="tight")
plt.show()