Visualisierung der Anzahl der Beschwerden von Lebensversicherungsunternehmen wurde fortgesetzt
import pathlib
from urllib.parse import urljoin
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
url = "https://www.seiho.or.jp/member/complaint/"
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")
dfs = []
for tag in soup.select("div.headMod04.mt30"):
name = tag.h3.get_text(strip=True).replace("Co., Ltd.", "")
href = (
tag.find_next_sibling("table", class_="mt10")
.find("a", text="Einzelheiten zur Aufschlüsselung der Beschwerden")
.get("href")
)
link = urljoin(url, href)
p = fetch_file(link)
with pdfplumber.open(p) as pdf:
p0 = pdf.pages[0]
table = p0.extract_table()
df0 = pd.DataFrame(table)
#Entfernen Sie Zeilenumbrüche, Leerzeichen und Kommas
df0 = df0.applymap(lambda s: "".join(s.split()).replace(",", "") if s else None)
df0 = df0.mask(df0.isna())
df0.iloc[0] = df0.iloc[0].fillna(method="ffill")
df0.iloc[:, 0] = df0.iloc[:, 0].fillna(method="ffill")
#DataFrame kann nicht gut konvertiert werden. Konvertieren Sie es daher einmal in CSV
p_csv = p.with_suffix(".csv")
df0.to_csv(p_csv, index=False, header=False)
df1 = (
pd.read_csv(p_csv, index_col=[0, 1], header=[0, 1])
.loc[:, pd.IndexSlice[:, "Gesamt"]]
.droplevel(level=1, axis=1)
)
df2 = df1.reindex(df1.index.drop("Gesamt", level=1, errors="raise"))
df2[name] = df2.sum(axis=1)
dfs.append(df2[name])
df = pd.concat(dfs, axis=1)
df
('Artikel', 'Inhalt') | Axa Lebensversicherung | AXA Direct Lebensversicherung | Asahi Lebensversicherungsgesellschaft | Aflac Lebensversicherung | Aeon Allianz Lebensversicherung | SBI Lebensversicherung | NN Lebensversicherung | FWD Fuji Lebensversicherung | ORIX Lebensversicherung | Cardiff Lebensversicherung | Kanpo Lebensversicherung | Creddy Aglycol Lebensversicherung | Gibralta Lebensversicherung | Sumitomo Lebensversicherungsgesellschaft | Sony Lebensversicherung | Sony Leben mit Lebensversicherung | SOMPO Sonnenblumen-Lebensversicherung (ehemalige Sompo Japan Nipponkoa Sonnenblumen-Lebensversicherung) | Erste Lebensversicherung | First Frontier Lebensversicherung | Taiki Lebensversicherung (ehemals Mitsui Lebensversicherung) | Daido Lebensversicherung | Solar Lebensversicherung | Zurich Life Insurance Company Limited | T & D Finanzielle Lebensversicherung | Tokio Marine & Nichido Anshin Lebensversicherung | Nissei Wealth Life Insurance | Japanische Lebensversicherungsgesellschaft | Neo First Lebensversicherung | Hanasaku Lebensversicherung | Wealth Life Insurance Gegenseitige Gesellschaft | Fukoku Shinrai Lebensversicherung | Prudential Life Insurance | PGF Life (Prudental Gibralta Finanzielle Lebensversicherung) | Manulife Lebensversicherung | Sumitomo Mitsui Marine Aioi Lebensversicherung | Sumitomo Mitsui Marine Primary Lebensversicherung | Grüne Lebensversicherung | Meiji Yasuda Lebensversicherungsgesellschaft | Lebensversicherung getroffen | Medicare Lebensversicherung | Lifenet Lebensversicherung | Rakuten Lebensversicherung |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
('Neues Vertragsverhältnis', 'Unangemessene Rekrutierung') | 38 | 0 | 82 | 10 | 0 | 1 | 0 | 11 | 7 | 0 | 6124 | 0 | 64 | 53 | 126 | 3 | 24 | 233 | 10 | 87 | 1 | 20 | 14 | 0 | 138 | 3 | 120 | 3 | 6 | 28 | 1 | 133 | 16 | 10 | 7 | 3 | 64 | 47 | 45 | 8 | 0 | 4 |
('Neues Vertragsverhältnis', 'Erhalten Sie unangemessene Benachrichtigungen') | 6 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | 5 | 0 | 91 | 0 | 4 | 4 | 7 | 0 | 5 | 9 | 0 | 3 | 0 | 16 | 11 | 0 | 6 | 0 | 10 | 3 | 3 | 4 | 0 | 6 | 0 | 2 | 5 | 0 | 0 | 4 | 13 | 0 | 0 | 2 |
('Neues Vertragsverhältnis', 'Unangemessene Rede') | 7 | 0 | 4 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 20827 | 0 | 45 | 3 | 22 | 0 | 1 | 4 | 2 | 1 | 0 | 2 | 0 | 0 | 0 | 0 | 12 | 0 | 1 | 1 | 0 | 26 | 0 | 4 | 1 | 1 | 1 | 10 | 3 | 1 | 0 | 0 |
('Neues Vertragsverhältnis', 'Unzureichende Erklärung') | 160 | 0 | 177 | 104 | 0 | 8 | 3 | 108 | 124 | 0 | 11660 | 2 | 148 | 233 | 4 | 17 | 67 | 182 | 60 | 205 | 3 | 51 | 78 | 6 | 108 | 6 | 339 | 40 | 11 | 68 | 0 | 45 | 52 | 37 | 14 | 105 | 20 | 92 | 381 | 15 | 12 | 45 |
('Neues Vertragsverhältnis', 'Unachtsamer Umgang mit Büroarbeiten') | 32 | 0 | 11 | 486 | 0 | 2 | 2 | 22 | 58 | 0 | 31 | 1 | 11 | 49 | 21 | 0 | 30 | 47 | 62 | 38 | 1 | 9 | 98 | 0 | 71 | 1 | 66 | 10 | 1 | 21 | 0 | 83 | 17 | 7 | 42 | 1 | 7 | 42 | 106 | 62 | 4 | 7 |
('Neues Vertragsverhältnis', 'Vertragsbestätigung') | 30 | 2 | 4 | 0 | 0 | 1 | 0 | 4 | 14 | 0 | 686 | 0 | 9 | 22 | 6 | 0 | 1 | 3 | 0 | 1 | 5 | 4 | 5 | 0 | 0 | 0 | 2 | 0 | 1 | 0 | 0 | 5 | 0 | 0 | 3 | 0 | 2 | 12 | 41 | 2 | 1 | 3 |
('Neues Vertragsverhältnis', 'Vertragsversicherungsbeziehung') | 33 | 9 | 17 | 237 | 0 | 12 | 2 | 14 | 734 | 3 | 121 | 1 | 28 | 40 | 9 | 1 | 4 | 28 | 0 | 9 | 30 | 5 | 49 | 2 | 12 | 0 | 13 | 9 | 0 | 12 | 0 | 17 | 17 | 2 | 5 | 0 | 1 | 17 | 208 | 20 | 34 | 17 |
('Neues Vertragsverhältnis', 'Wertpapiere nicht angekommen') | 11 | 1 | 5 | 13 | 0 | 0 | 0 | 29 | 16 | 0 | 25 | 0 | 5 | 19 | 10 | 2 | 5 | 7 | 7 | 2 | 0 | 1 | 26 | 0 | 12 | 1 | 21 | 1 | 1 | 3 | 5 | 34 | 0 | 1 | 8 | 2 | 2 | 0 | 107 | 0 | 1 | 0 |
('Neues Vertragsverhältnis', 'その他Neues Vertragsverhältnis') | 325 | 28 | 117 | 2066 | 0 | 14 | 7 | 56 | 692 | 16 | 3466 | 0 | 64 | 375 | 164 | 1 | 35 | 34 | 135 | 30 | 108 | 305 | 242 | 26 | 85 | 9 | 471 | 43 | 22 | 120 | 26 | 49 | 43 | 23 | 37 | 7 | 15 | 488 | 417 | 21 | 559 | 68 |
('Speicherbezogen', 'Geld einsameln') | 0 | 0 | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 14 | 0 | 5 | 6 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | 0 |
('Speicherbezogen', 'Kontoübertragung / Überweisung') | 175 | 11 | 81 | 1241 | 0 | 2 | 11 | 112 | 368 | 0 | 306 | 0 | 497 | 400 | 336 | 0 | 118 | 103 | 0 | 106 | 72 | 39 | 51 | 3 | 242 | 10 | 319 | 12 | 5 | 256 | 66 | 161 | 27 | 74 | 46 | 0 | 4 | 206 | 874 | 45 | 78 | 87 |
('Speicherbezogen', 'Arbeitsbereich Gruppenbehandlung') | 40 | 0 | 19 | 192 | 0 | 0 | 0 | 0 | 2 | 0 | 38 | 0 | 93 | 43 | 11 | 0 | 1 | 22 | 0 | 15 | 1 | 0 | 0 | 0 | 8 | 0 | 71 | 0 | 0 | 71 | 0 | 2 | 0 | 0 | 3 | 0 | 0 | 77 | 22 | 0 | 0 | 0 |
('Speicherbezogen', 'Versicherungsprämienzahlung') | 32 | 0 | 60 | 20 | 0 | 0 | 2 | 1 | 63 | 0 | 134 | 0 | 148 | 95 | 13 | 0 | 5 | 131 | 0 | 26 | 16 | 38 | 53 | 4 | 54 | 2 | 224 | 4 | 0 | 15 | 8 | 50 | 26 | 7 | 10 | 0 | 3 | 79 | 17 | 1 | 0 | 1 |
('Speicherbezogen', 'Premium Transfer Darlehen') | 10 | 0 | 15 | 17 | 0 | 0 | 0 | 2 | 15 | 0 | 0 | 0 | 103 | 101 | 35 | 0 | 11 | 38 | 0 | 13 | 4 | 6 | 0 | 1 | 38 | 6 | 50 | 0 | 0 | 30 | 4 | 32 | 8 | 3 | 4 | 0 | 0 | 23 | 27 | 0 | 0 | 0 |
('Speicherbezogen', 'Ablauf / Auferstehung') | 33 | 1 | 24 | 161 | 0 | 0 | 5 | 21 | 88 | 0 | 85 | 0 | 110 | 86 | 34 | 0 | 22 | 24 | 0 | 13 | 11 | 15 | 114 | 0 | 34 | 5 | 46 | 1 | 0 | 14 | 3 | 16 | 2 | 21 | 14 | 0 | 1 | 44 | 208 | 12 | 8 | 12 |
('Speicherbezogen', 'その他Speicherbezogen') | 2 | 0 | 8 | 0 | 0 | 1 | 7 | 0 | 2 | 0 | 123 | 0 | 85 | 105 | 46 | 0 | 18 | 67 | 0 | 15 | 18 | 11 | 70 | 2 | 22 | 1 | 164 | 15 | 8 | 4 | 3 | 3 | 5 | 37 | 0 | 0 | 0 | 200 | 17 | 18 | 2 | 1 |
('Naturschutzbeziehungen', 'Dividendendetails') | 9 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 20 | 0 | 16 | 58 | 3 | 0 | 0 | 76 | 0 | 12 | 7 | 3 | 0 | 0 | 2 | 0 | 51 | 0 | 0 | 19 | 45 | 1 | 4 | 0 | 0 | 0 | 0 | 39 | 0 | 0 | 0 | 0 |
('Naturschutzbeziehungen', 'Auftragnehmerdarlehen') | 156 | 0 | 33 | 82 | 0 | 0 | 10 | 15 | 56 | 0 | 187 | 0 | 469 | 290 | 215 | 0 | 84 | 152 | 0 | 42 | 170 | 10 | 0 | 3 | 124 | 3 | 274 | 0 | 0 | 84 | 12 | 233 | 17 | 19 | 17 | 0 | 0 | 149 | 384 | 0 | 0 | 0 |
('Naturschutzbeziehungen', 'aktualisieren') | 42 | 7 | 44 | 43 | 0 | 1 | 2 | 7 | 17 | 1 | 0 | 0 | 273 | 155 | 31 | 0 | 13 | 115 | 0 | 74 | 53 | 29 | 69 | 4 | 39 | 3 | 110 | 10 | 0 | 176 | 6 | 12 | 2 | 25 | 3 | 0 | 0 | 143 | 136 | 0 | 16 | 21 |
('Naturschutzbeziehungen', 'Vertragsdetails ändern') | 87 | 1 | 56 | 209 | 0 | 2 | 3 | 12 | 58 | 0 | 148 | 0 | 149 | 553 | 81 | 0 | 27 | 128 | 1 | 72 | 43 | 27 | 29 | 5 | 44 | 19 | 332 | 2 | 3 | 30 | 24 | 109 | 27 | 39 | 7 | 5 | 0 | 228 | 190 | 2 | 1 | 6 |
('Naturschutzbeziehungen', 'Namensänderung / Adressänderung') | 148 | 0 | 96 | 347 | 0 | 2 | 6 | 25 | 163 | 1 | 192 | 1 | 363 | 481 | 257 | 7 | 61 | 115 | 26 | 104 | 67 | 21 | 98 | 9 | 155 | 28 | 400 | 5 | 0 | 117 | 29 | 150 | 56 | 31 | 20 | 36 | 0 | 281 | 374 | 31 | 16 | 20 |
('Naturschutzbeziehungen', 'Sondervertrag Mitte der Karriere zusätzlich') | 7 | 2 | 1 | 113 | 0 | 0 | 0 | 3 | 13 | 0 | 76 | 0 | 180 | 21 | 20 | 0 | 4 | 5 | 0 | 9 | 3 | 1 | 13 | 0 | 7 | 0 | 124 | 1 | 0 | 6 | 1 | 6 | 0 | 0 | 3 | 0 | 0 | 7 | 53 | 0 | 0 | 0 |
('Naturschutzbeziehungen', 'Stornierungsverfahren') | 437 | 7 | 365 | 1112 | 0 | 5 | 19 | 37 | 246 | 0 | 686 | 1 | 700 | 956 | 334 | 5 | 134 | 288 | 56 | 166 | 188 | 106 | 75 | 7 | 275 | 18 | 1023 | 13 | 0 | 261 | 44 | 178 | 82 | 73 | 70 | 18 | 7 | 542 | 902 | 22 | 14 | 54 |
('Naturschutzbeziehungen', 'Stornierungsrückerstattung') | 21 | 1 | 29 | 228 | 0 | 0 | 2 | 4 | 37 | 1 | 181 | 0 | 263 | 171 | 59 | 98 | 14 | 16 | 12 | 45 | 25 | 9 | 2 | 15 | 50 | 7 | 66 | 4 | 0 | 25 | 4 | 13 | 63 | 12 | 7 | 3 | 3 | 108 | 231 | 0 | 0 | 1 |
('Naturschutzbeziehungen', 'Lebensversicherungskarte / Geldautomat') | 0 | 0 | 9 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 189 | 0 | 0 | 0 | 54 | 0 | 4 | 0 | 5 | 0 | 0 | 0 | 0 | 485 | 0 | 0 | 75 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 38 | 0 | 0 | 0 | 0 |
('Naturschutzbeziehungen', 'その他Naturschutzbeziehungen') | 57 | 0 | 107 | 1353 | 0 | 0 | 39 | 19 | 421 | 0 | 1056 | 0 | 912 | 955 | 670 | 7 | 43 | 436 | 24 | 53 | 17 | 84 | 46 | 27 | 152 | 32 | 646 | 8 | 3 | 217 | 14 | 138 | 64 | 14 | 5 | 44 | 3 | 763 | 794 | 3 | 20 | 33 |
('Versicherungsansprüche und Leistungen', 'Fälligkeitsversicherung, Rente usw.') | 65 | 0 | 109 | 76 | 9 | 0 | 5 | 37 | 44 | 0 | 434 | 0 | 835 | 535 | 104 | 12 | 24 | 160 | 24 | 125 | 40 | 63 | 1 | 3 | 53 | 117 | 249 | 0 | 0 | 233 | 183 | 95 | 37 | 30 | 7 | 32 | 20 | 269 | 244 | 0 | 0 | 0 |
('Versicherungsansprüche und Leistungen', 'Zahlungsverfahren für die Todesversicherung') | 71 | 1 | 60 | 180 | 2 | 0 | 8 | 4 | 127 | 1 | 145 | 1 | 158 | 400 | 48 | 2 | 19 | 98 | 18 | 47 | 41 | 13 | 3 | 12 | 5 | 18 | 167 | 2 | 0 | 30 | 20 | 15 | 80 | 42 | 6 | 26 | 1 | 185 | 235 | 1 | 3 | 8 |
('Versicherungsansprüche und Leistungen', 'Beschlossen, keine Versicherungsansprüche wie den Tod zu bezahlen') | 5 | 0 | 2 | 23 | 0 | 0 | 1 | 0 | 16 | 0 | 30 | 1 | 6 | 7 | 1 | 0 | 0 | 5 | 0 | 3 | 6 | 4 | 0 | 0 | 1 | 0 | 45 | 0 | 0 | 3 | 0 | 0 | 0 | 0 | 1 | 2 | 1 | 17 | 9 | 0 | 1 | 1 |
('Versicherungsansprüche und Leistungen', 'Verfahren zur Auszahlung von Krankenhausleistungen') | 766 | 16 | 151 | 2203 | 0 | 8 | 2 | 203 | 2116 | 2 | 874 | 0 | 709 | 1568 | 368 | 0 | 197 | 356 | 0 | 241 | 109 | 111 | 141 | 12 | 150 | 11 | 497 | 57 | 9 | 401 | 7 | 143 | 16 | 82 | 177 | 0 | 0 | 808 | 1631 | 57 | 68 | 132 |
('Versicherungsansprüche und Leistungen', 'Beschlossen, keine Leistungen wie Krankenhausaufenthalt zu zahlen') | 189 | 5 | 50 | 709 | 0 | 4 | 3 | 20 | 247 | 1 | 330 | 0 | 53 | 101 | 32 | 0 | 25 | 115 | 0 | 46 | 25 | 42 | 30 | 3 | 11 | 1 | 163 | 5 | 2 | 58 | 0 | 5 | 1 | 11 | 53 | 0 | 0 | 197 | 337 | 17 | 14 | 36 |
('Versicherungsansprüche und Leistungen', 'その他Versicherungsansprüche und Leistungen') | 6 | 2 | 15 | 2 | 0 | 0 | 4 | 4 | 46 | 1 | 176 | 0 | 1 | 157 | 18 | 1 | 57 | 153 | 7 | 0 | 5 | 10 | 13 | 8 | 4 | 3 | 245 | 6 | 3 | 0 | 0 | 3 | 8 | 22 | 4 | 0 | 2 | 104 | 183 | 6 | 3 | 25 |
('Andere', 'Einstellung und Manieren des Personals') | 118 | 0 | 305 | 33 | 0 | 4 | 2 | 14 | 48 | 0 | 95 | 2 | 168 | 391 | 106 | 2 | 32 | 1072 | 26 | 163 | 75 | 96 | 80 | 0 | 162 | 5 | 729 | 22 | 2 | 129 | 0 | 53 | 0 | 58 | 27 | 58 | 8 | 493 | 117 | 16 | 3 | 7 |
('Andere', 'Prämienabzug') | 13 | 0 | 3 | 46 | 0 | 0 | 0 | 4 | 14 | 0 | 27 | 0 | 46 | 30 | 22 | 0 | 6 | 12 | 0 | 2 | 3 | 1 | 13 | 0 | 21 | 0 | 52 | 0 | 0 | 18 | 1 | 3 | 2 | 0 | 2 | 0 | 1 | 17 | 43 | 0 | 2 | 1 |
('Andere', 'Beziehung zum Umgang mit persönlichen Informationen') | 14 | 0 | 42 | 51 | 0 | 1 | 0 | 22 | 84 | 0 | 14 | 1 | 26 | 80 | 66 | 0 | 15 | 123 | 1 | 32 | 6 | 9 | 9 | 1 | 13 | 0 | 124 | 1 | 0 | 35 | 0 | 45 | 13 | 4 | 4 | 0 | 1 | 101 | 4 | 3 | 1 | 21 |
('Andere', 'Kundendienst') | 1689 | 0 | 735 | 957 | 0 | 4 | 18 | 268 | 364 | 0 | 60 | 0 | 933 | 862 | 366 | 29 | 122 | 684 | 93 | 601 | 255 | 51 | 321 | 6 | 641 | 69 | 1128 | 4 | 1 | 299 | 17 | 138 | 91 | 85 | 144 | 67 | 6 | 636 | 2273 | 14 | 166 | 53 |
('Andere', 'Andere') | 107 | 13 | 66 | 444 | 0 | 0 | 1 | 23 | 316 | 4 | 505 | 0 | 132 | 2155 | 244 | 13 | 53 | 676 | 154 | 120 | 28 | 130 | 50 | 14 | 79 | 7 | 462 | 21 | 5 | 25 | 778 | 60 | 52 | 328 | 22 | 161 | 2 | 684 | 312 | 13 | 89 | 20 |
import japanize_matplotlib
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams["figure.dpi"] = 200
df.T.plot.barh(stacked=True, figsize=(15, 15))