「生命保険に関する全国実態調査(速報版)」をPythonで可視化してみる

「2021(令和3)年度 生命保険に関する全国実態調査(速報版)」が公表されました。

〈図表Ⅰ-2〉生命保険・個人年金保険の世帯加入率(全生保)[世帯主年齢別]

2009年と2021年の世帯加入率の比較です。75歳~89歳の加入率が増加が顕著です。これは、「高齢者が保険を買ったから」なのか、「(終身)保険に加入している顧客が高齢化したから」なのか、というと恐らく後者の解釈なんでしょうね。

90歳以上では、逆に加入率が激減していますが、これはサンプル数が少ないことに起因するものと思われます。

以下、上記グラフを作成した際に用いたコードです。「tika」を用いると、pdfファイルを情報を読み取れます。手入力による入力ミスをなくす、という意味で便利なライブラリです。

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties
from tika import parser

fp = FontProperties(fname = r'C:\Windows\Fonts\msgothic.ttc', size = 14)

file_data = parser.from_file("sokuhoubanR3.pdf") # ダウンロードした実態調査を読み込み
text = file_data["content"]

num = text.find('〈図表Ⅰ−2〉生命保険・個人年金保険の世帯加入率(全生保)[世帯主年齢別]') #場所を特定
cvr_by_age = text[num+110:num+601].replace('\u3000','').replace('\n','').replace('�',' ').split() # 範囲を指定し、不要な文字列を削除
age_band = np.array(cvr_by_age).reshape((15,6))[:,0][1:,] # 年齢幅の配列(全体は削除)
cvr = np.array(cvr_by_age).reshape((15,6))[:,1:].astype('float')[1:,] # 世帯加入率の配列を数値に変換(全体は削除)

fig = plt.figure(figsize = (14,7))
plt.bar(age_band, cvr[:,0], label='2009年', width = 0.3, align='center', alpha=0.5)
plt.bar(age_band, cvr[:,4], label='2021年', width = 0.3, align='edge', alpha=0.5)
plt.ylabel('世帯加入率(%)', fontproperties = fp)
plt.xticks(fontproperties = fp, rotation=45)
plt.legend(prop = fp)
fig.savefig("cvr_by_age.png")

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です