日本の交通事故死亡者数の推移を性別・年齢別に棒グラフ化する

日本ほど歩行者軽視の先進国は存在しないということを書いたが、日本の交通事故死者数はどうなっているのか気になったので、1950年〜2017年の交通事故死亡数の推移をグラフ化してみることにした。

スポンサーリンク

## データの下準備

先ず、このサイトから必要なデータを入手する。

from pandas import *

df = read_csv('caraccident.csv',encoding='cp932')
df.head(2)
表章項目 死因年次推移分類 性別 年齢(5歳階級) /時間軸(年次) 2017年 2016年 2015年 2014年 2010年 1995年 1990年 1985年 1980年 1975年 1970年 1965年 1960年 1955年 1950年
0 死亡数【人】 Hi15_交通事故 総数 総数 NaN 5004 5278 5646 5717 7222 15147 15828 14401 13302 16191 24096 19516 17757 10500 7542
1 死亡数【人】 Hi15_交通事故 総数 0~4歳 NaN 30 31 40 31 53 194 293 332 565 996 1190 1139 1266 1108 1007

2 rows × 22 columns

df.drop(['表章項目','死因年次推移分類','性別','/時間軸(年次)'],axis=1,inplace=True)
df.head(2)
年齢(5歳階級) 2017年 2016年 2015年 2014年 2010年 2005年 2000年 1995年 1990年 1985年 1980年 1975年 1970年 1965年 1960年 1955年 1950年
0 総数 5004 5278 5646 5717 7222 10028 12857 15147 15828 14401 13302 16191 24096 19516 17757 10500 7542
1 0~4歳 30 31 40 31 53 82 120 194 293 332 565 996 1190 1139 1266 1108 1007
df = df.convert_objects(convert_numeric=True)
/root/.pyenv/versions/miniconda3-latest/envs/py368/lib/python3.6/site-packages/ipykernel_launcher.py:1: FutureWarning: convert_objects is deprecated.  To re-infer data dtypes for object columns, use DataFrame.infer_objects()
For all other conversions use the data-type specific converters pd.to_datetime, pd.to_timedelta and pd.to_numeric.
  """Entry point for launching an IPython kernel.
スポンサーリンク

0〜100歳以上の年次別自殺者数をプロット

from matplotlib.pyplot import *
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams
style.use('ggplot')

fp = FontProperties(fname='/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf', size=54)
rcParams['font.family'] = fp.get_name()
rcParams["font.size"] = "20"
fig, ax = subplots(figsize=(25,20))
df[:23][1:].set_index('年齢(5歳階級)').T.plot(kind='barh',ax=ax,stacked=True)
ax.legend(loc='lower right', fancybox=True, framealpha=0.5);
xticks(np.arange(0,2.6e4,1e4/5),
    ['{}万'.format(float(x/1e4)) if x > 0 else 0 for x in np.arange(0,2.6e4,1e4/5)]);

2017年の交通事故死亡者数は、警察庁発表だと3694人となっているが、これは24時間以内死亡数で、30日以内死亡数は4431人となっている。厚労省のデータは1年以内死亡数ということらしいが、このデータには水上事故や航空事故も入っている。路上交通事故死亡数については4452人となっている。

スポンサーリンク

若年層の交通事故死亡数の推移を考察する

年齢層を、0〜19歳、20〜39歳、40〜59歳、60歳以上に分けて、特に、若年層の交通事故死亡者数の推移に焦点を当てる。

df1 = df[:5][1:].groupby(np.arange(len(df[:5][1:]))//4).sum()
df1.index = df[:5][1:].loc[1::4, '年齢(5歳階級)']
df2 = df[:9][5:].groupby(np.arange(len(df[:9][5:]))//4).sum()
df2.index = df[:9][5:].loc[1::4, '年齢(5歳階級)']
df3 = df[:13][9:].groupby(np.arange(len(df[:13][9:]))//4).sum()
df3.index = df[:13][9:].loc[1::4, '年齢(5歳階級)']
df4 = df[:22][13:].groupby(np.arange(len(df[:22][13:]))//9).sum()
df4.index = df[:22][13:].loc[1::9, '年齢(5歳階級)']
df5 = concat([df1,df2,df3,df4], axis=0)
df5.rename(index={'0~4歳':'0〜19歳','20~24歳':'20〜39歳','40~44歳':'40〜59歳','60~64歳':'60歳〜'},inplace=True)
df5.reset_index(inplace=True)
style.use('fivethirtyeight')

fp = FontProperties(fname='/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf', size=54)
rcParams['font.family'] = fp.get_name()
rcParams["font.size"] = "18"
fig, ax = subplots(figsize=(18,10))
df5.set_index('年齢(5歳階級)').T.plot(kind='barh',ax=ax,stacked=True)
ax.legend(loc='lower right',fancybox=True,framealpha=0.5,prop={'size': 26})
xticks(np.arange(0,2.6e4,1e4/5),
    ['{}万'.format(float(x/1e4)) if x > 0 else 0 for x in np.arange(0,2.6e4,1e4/5)]);

60年代、70年代は、交通戦争と言われるぐらい交通事故死者数が多かった。あの時代はモータリゼーションが始まったばかりの頃だったので車はポンコツ、道路事情も劣悪、運転マナーも板に付かない時代であったことを考えれば、この数字は致し方ない、もしくは至極当然と言わざるを得ない。今の未成年者は、交通事故で非業の死を遂げる確率がかなり減ったので幸せだ。昔の未成年者は、交通事故死の恐怖だけではなく、病死の確率も今とは比べ物にならないくらい高かったので、非常に生きるのが難しかった時代と言える。気になるのは、交通事故死亡数の半数が、歩行者と自転車運転者の二大交通弱者であるということだ。弱者に残酷な日本の実態を象徴している。交通事故死亡者数が半世紀で大幅に減少しているのは、少子化で運転の荒い若者が激減すると同時に、失われた24年で貧困化し車にすら乗れなくなったことと、さらに、日本国民の多くが外出すると金がかかるので外出を控えるようになり、死亡事故の15%を占めるバイク乗りが大幅に減少したためである。言い換えれば、長期にわたる経済の低迷が、交通死亡事故を大幅に減少させたということになる。何とも皮肉な話である。

スポンサーリンク

2017年の交通死亡数男女比較

df6 = df[['年齢(5歳階級)','2017年']][:44][24:]
df6.rename(columns={'2017年':'Male'}, inplace=True)
df6
年齢(5歳階級) Male
24 0~4歳 16.0
25 5~9歳 21.0
26 10~14歳 10.0
27 15~19歳 103.0
28 20~24歳 169.0
29 25~29歳 127.0
30 30~34歳 104.0
31 35~39歳 110.0
32 40~44歳 162.0
33 45~49歳 239.0
34 50~54歳 193.0
35 55~59歳 232.0
36 60~64歳 226.0
37 65~69歳 325.0
38 70~74歳 312.0
39 75~79歳 334.0
40 80~84歳 358.0
41 85~89歳 258.0
42 90~94歳 80.0
43 95~99歳 8.0
df7 = df[['年齢(5歳階級)','2017年']][:67][47:]
df7.rename(columns={'2017年':'Female'}, inplace=True)
df7
年齢(5歳階級) Female
47 0~4歳 14.0
48 5~9歳 10.0
49 10~14歳 5.0
50 15~19歳 25.0
51 20~24歳 32.0
52 25~29歳 24.0
53 30~34歳 17.0
54 35~39歳 17.0
55 40~44歳 33.0
56 45~49歳 30.0
57 50~54歳 49.0
58 55~59歳 58.0
59 60~64歳 90.0
60 65~69歳 147.0
61 70~74歳 195.0
62 75~79歳 265.0
63 80~84歳 288.0
64 85~89歳 211.0
65 90~94歳 84.0
66 95~99歳 18.0
df8 = merge(df6,df7,how='inner',on='年齢(5歳階級)')
df8['Total'] = df8['Male']+df8['Female']
df8['Female_Pct'] = df8['Female'] / df8['Total']
df8['Male_Pct'] = df8['Male'] / df8['Total']
rcParams['figure.figsize'] = 20,12
rcParams["font.size"] = "16"

for (i, row) in df8.iterrows():
    bar([row['年齢(5歳階級)']], [row['Male_Pct']],
        color=['#008AB8'], width=0.9, align='center', edgecolor='none')
    bar([row['年齢(5歳階級)']], [row['Female_Pct']], bottom=[row['Male_Pct']],
            color=['#CC6699'], width=0.9, align='center', edgecolor='none')
    
xlim(-0.6, 19.6)
ylim(0, 1)
xticks(range(0, 20), df8['年齢(5歳階級)'], fontsize=13.5)
grid(False)
yticks(np.arange(0, 1.01, 0.25),
       ['{}%'.format(int(x * 100)) for x in np.arange(0, 1.01, 0.25)])
xlabel('Age group')
ylabel('Percentage of age group')

plot([-0.425, 20.425], [0.5, 0.5], lw=2, color='black')
plot([-0.425, 20.425], [0.25, 0.25], lw=2, color='black')
plot([-0.425, 20.425], [0.75, 0.75], lw=2, color='black');

2017年の交通事故死亡数の男女比を見ると、あまりにも男が死に過ぎていることに気付かされる。男性死亡数が女性死亡数より少ないのは90歳以上のみとなっているが、これはただ単に、90歳以上人口は女性の方が男性より圧倒的に多いためだろう。交通死亡事故の64%以上は、歩行者、自転車と二輪車の乗員が犠牲になっているという事実を考えると、交通弱者は事故に遭わないように細心の注意が必要だろう。暴走車が突っ込んでくるのは防ぎようがないが、無理な横断や無茶な自転車運転(例えば雨の日の自転車運転)を慎むだけで、歩行者と自転車運転者の事故死の危険性は減少するはずである。結局は、自分の身は自分が守るしかないの一言に尽きる。子供がいる親なら、子供を守るのは親の責任である。注意一秒怪我一生、飛び出すな車は急に止まれないと言われるように、車に当たったら死ぬ可能性が高いということと、車の運転者は大した罪にはならない、つまり、交通事故死は完全に犬死でしかないということを肝に銘じておくべきだろう。

スポンサーリンク
スポンサーリンク