[PYTHON] Visualisieren Sie Details zu Beschwerden von Lebensversicherungsunternehmen

Einführung

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))

insurance04.png

Recommended Posts

Visualisieren Sie Details zu Beschwerden von Lebensversicherungsunternehmen
Visualisieren Sie die Anzahl der Beschwerden von Lebensversicherungsunternehmen
[Python] Darstellung der Anzahl der Beschwerden von Lebensversicherungsunternehmen in einem Balkendiagramm