LoginSignup
3
3

More than 3 years have passed since last update.

生命保険会社の苦情件数を可視化

Last updated at Posted at 2020-11-07

はじめに

[Python]生命保険会社の苦情件数を棒グラフで表現

を参考に作成しました

つづき

苦情の内訳の詳細のPDFをpdfplumberでcsvに変換して可視化
生命保険会社の苦情の内訳の詳細を可視化

スクレイピング

import requests
from bs4 import BeautifulSoup

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

result = []

for tag in soup.select("div.headMod04.mt30"):

    data = []

    data.append(tag.h3.get_text(strip=True).replace("株式会社", ""))

    for table in tag.find_next_siblings("table", class_=["mt10", "mt15"], limit=2):

        for td in table.select("tr > td.taR"):

            f = float(td.get_text(strip=True).rstrip("件名%").replace(",", ""))

            data.append(int(f) if f.is_integer() else f)

    result.append(data)
import pandas as pd

df = pd.DataFrame(
    result,
    columns=[
        "保険会社名",
        "苦情件数",
        "新契約関係",
        "収納関係",
        "保全関係",
        "保険金関係",
        "その他",
        "保有契約件数",
        "お客さま数",
    ],
).set_index("保険会社名")

df
保険会社名 苦情件数 新契約関係 収納関係 保全関係 保険金関係 その他 保有契約件数 お客さま数 苦情比率
アクサ生命保険 4909 12.9 5.9 19.5 22.2 39.4 4.76064e+06 2.58086e+06 0.00190208
アクサダイレクト生命保険 102 39.2 11.8 16.7 19.6 12.7 159640 120100 0.000849292
朝日生命保険相互会社 2895 14.4 7.3 25.5 13.2 39.7 7.77216e+06 1.94576e+06 0.00148785
アフラック生命保険 12699 22.9 12.8 27.4 24.8 12 2.43943e+07 1.52941e+07 0.000830322
イオン・アリアンツ生命保険 11 0 0 0 100 0 16219 16219 0.000678217
SBI生命保険 72 52.8 4.2 13.9 16.7 12.5 115621 102485 0.000702542
エヌエヌ生命保険 163 8.6 15.3 49.1 14.1 12.9 504097 186308 0.000874895
FWD富士生命保険 1098 22 12.4 11.1 24.3 30.1 1.4471e+06 1.07855e+06 0.00101803
オリックス生命保険 6587 25 8.2 15.3 39.1 12.5 4.69599e+06 4.69599e+06 0.00140269
カーディフ生命保険 31 61.3 0 9.7 16.1 12.9 8891 1.33126e+06 2.32862e-05
かんぽ生命保険 48859 87.9 1.4 5.2 4 1.4 1.79239e+07 1.0281e+07 0.00475235
クレディ・アグリコル生命保険 10 40 0 10 20 30 59089 52001 0.000192304
ジブラルタ生命保険 7783 4.8 13.4 42.6 22.5 16.7 6.41288e+06 6.41288e+06 0.00121365
住友生命保険相互会社 11698 6.7 7.1 32.6 23.5 30 1.14377e+07 6.93738e+06 0.00168623
ソニー生命保険 3871 9.4 12.2 43.1 14.7 20.7 8.16556e+06 3.70221e+06 0.00104559
ソニーライフ・ウィズ生命保険 200 12 0 58.5 7.5 22 99225 87701 0.00228048
SOMPOひまわり生命保険(旧損保ジャパン日本興亜ひまわり生命保険) 1268 13.5 13.8 29.8 25 17.9 4.19732e+06 2.9958e+06 0.000423259
第一生命保険 5728 9.2 6.7 23.9 15.3 44.8 2.07372e+07 8.03565e+06 0.000712824
第一フロンティア生命保険 706 37.8 0 16.6 6.8 38.8 1.59389e+06 1.25441e+06 0.000562816
大樹生命保険(旧三井生命保険) 2495 14.6 7.5 22.9 18.2 36.8 2.58049e+06 1.82014e+06 0.00137078
大同生命保険 1431 10.3 8.5 40 15.7 25.6 2.08751e+06 798324 0.00179251
太陽生命保険 1328 30.6 8.1 22.1 17.6 21.6 7.69601e+06 2.03224e+06 0.000653466
チューリッヒ・ライフ・インシュアランス・カンパニー・リミテッド 1794 29.1 16.1 18.5 10 26.3 1.17402e+06 993181 0.00180632
T&Dフィナンシャル生命保険 170 19.4 5.9 40.6 21.8 12.4 329886 281942 0.000602961
東京海上日動あんしん生命保険 2809 15.3 14.2 30 7.8 32.6 5.97493e+06 3.54450e+06 0.000792494
ニッセイ・ウェルス生命保険 379 4.7 6.1 28.8 39.1 21.4 332853 274786 0.00137926
日本生命保険相互会社 9210 11.1 9.4 37.8 14.6 27 3.30507e+07 1.21611e+07 0.00075733
ネオファースト生命保険 299 36.5 10.7 14.4 22.4 16.1 379944 379944 0.000786958
はなさく生命保険 86 52.3 15.1 7 16.3 9.3 74374 70904 0.00121291
富国生命保険相互会社 2873 8.8 13.5 35.1 25 17.6 3.79431e+06 1.7536e+06 0.00163834
フコクしんらい生命保険 1300 2.5 6.5 13.7 16.2 61.2 591927 449197 0.00289405
プルデンシャル生命保険 2055 19.2 12.9 40.7 12.6 14.5 4.181e+06 1.7134e+06 0.00119937
PGF生命(プルデンシャル ジブラルタ ファイナンシャル生命保険) 826 17.4 8.2 38.1 17.1 19.1 584295 518397 0.00159337
マニュライフ生命保険 1089 7.3 13.1 19.2 17.1 43.3 1.56167e+06 1.04053e+06 0.00104658
三井住友海上あいおい生命保険 765 15.6 10.1 17.1 31.2 26 3.91038e+06 3.91038e+06 0.000195633
三井住友海上プライマリー生命保険 561 20 0 18.7 10.3 51 1.20054e+06 987210 0.000568268
みどり生命保険 174 63.8 4.6 7.5 13.8 10.3 249168 203418 0.000855382
明治安田生命保険相互会社 7094 9.9 8.9 32.2 21.9 27.1 1.23014e+07 7.04229e+06 0.00100734
メットライフ生命保険 10905 12 10.7 28 24.1 25.2 9.43914e+06 9.43914e+06 0.0011553
メディケア生命保険 388 33 19.6 14.9 20.6 11.9 778313 702099 0.000552629
ライフネット生命保険 1114 54.7 7.9 6 8 23.4 387775 246432 0.00452052
楽天生命保険 678 21.4 14.5 19.9 29.2 15 844748 499039 0.00135861

可視化

import japanize_matplotlib
import matplotlib as mpl
import matplotlib.pyplot as plt

mpl.rcParams["figure.dpi"] = 200

苦情件数

df["苦情件数"].plot.barh(figsize=(15, 15))

insurance01.png

苦情比率

df["苦情比率"] = df["苦情件数"] / df["お客さま数"]

df["苦情比率"].plot.barh(figsize=(15, 15))

insurance02.png

苦情の内訳

df1 = df.reindex(columns = ["新契約関係", "収納関係", "保全関係", "保険金関係", "その他"])

df1.plot.barh(stacked=True, figsize=(15, 15))

insurance03.png

保有契約件数

insurance04.png

お客さま数

insurance05.png

一人当たりの平均契約件数

insurance06.png

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3