57 Pandas+Pyecharts | 交通事故数据分析可视化

大家好,我是欧K~

本期我们利用Python分析「交通事故数据集」,看看:交通事故时间分布、事故车辆颜色分布、最多交通事故起因、各事故责任划分占比、驾驶员性别占比、驾驶员驾龄占比、事故车辆品牌分布等等,希望对大家有所帮助,如有疑问或者需要改进的地方可以联系小编。

涉及到的库:

  • Pandas — 数据处理
  • Pyecharts — 数据可视化

1. 导入模块

import pandas as pd
from pyecharts.charts import *
from pyecharts import options as opts
import warnings
warnings.filterwarnings('ignore')

2. Pandas数据处理

2.1 读取数据

df = pd.read_excel('./交通事故数据集.xlsx')

2.2 数据信息

df.info()

2.3 去除空数据

df = df.dropna()

2.4 数据去重

df = df.drop_duplicates()

2.5 删除不负责任的数据

df = df[~(df['责任划分'] == '不负责任')]

2.6 时间数据处理

df['事故时间_年'] = df['时间_td'].dt.year
df['事故时间_月'] = df['时间_td'].dt.month
df['事故时间_日'] = df['时间_td'].dt.day
df['事故时间_时'] = df['时间_td'].dt.hour

2.7 驾驶员出生日期数据处理

df1['驾驶员出生日期_年'] = df1['驾驶员出生日期_年'].astype('int')
df1['驾驶员年龄'] = df1['事故时间_年'] - df1['驾驶员出生日期_年']

3. Pyecharts数据可视化

3.1 交通事故时间分布

def get_line1():
    chart = (
        Line()
        .add_xaxis(x_data)
        .add_yaxis('', y_data)
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='1-交通事故时间分布',
                subtitle=subtitle,
                pos_top='2%',
                pos_left='center',
                title_textstyle_opts=opts.TextStyleOpts(color=lab_color, font_size=20)
            ),
            visualmap_opts=opts.VisualMapOpts(
                is_show=False,
                range_color=range_color,
            ),
        )    )

3.2 交通事故一月各天分布

一个月的数据中每天发生交通事故的数量差异不是很大。

3.3 交通事故小时分布

def get_line3():
    chart = (
        Line()
        .add_xaxis(x_data)
        .add_yaxis('', y_data)
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='3-交通事故小时分布',
                subtitle=subtitle,
                pos_top='2%',
                pos_left='center',
                title_textstyle_opts=opts.TextStyleOpts(color=lab_color, font_size=20)
            ),
            visualmap_opts=opts.VisualMapOpts(
                is_show=False,
                range_color=range_color,
            ),
        )
    )

上图可以看出:交通时间基本集中在早上8时-下午20时,原因应该是白天出行人流量比较大,事故发生率比较高。

3.4 交通事故车辆颜色TOP10

def get_bar():
    chart = (
        Bar()
        .add_xaxis(x_data)
        .add_yaxis('', y_data,label_opts=opts.LabelOpts(position='right'))
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='4-交通事故车辆颜色TOP10',
                subtitle=subtitle,
                pos_top='2%',
                pos_left='center',
                title_textstyle_opts=opts.TextStyleOpts(color=lab_color, font_size=20)
            ),
            legend_opts=opts.LegendOpts(is_show=False)
        )
    )

交通事故车辆颜色:白色(9364起)、黑色(3098起)、银色(2068起)、红色(1564起)、蓝色(1022起)

3.5 交通事故起因

交通事故原因最多的是未按规定让行的事故(7188起),其次是追尾的(5153起),以及倒车的(1611起)等等。

3.6 交通事故责任划分占比

def get_bar():
    chart = (
       Pie()
        .add('',
             datas,
             center=['50%', '55%'],
             label_opts=opts.LabelOpts(formatter='{b}: {c} ({d}%)')
            )
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='6-责任划分占比',
                subtitle=subtitle,
                pos_top='2%',
                pos_left='center',
                title_textstyle_opts=opts.TextStyleOpts(color=lab_color, font_size=20)
            ),
        )    )

负全部责任事故约占比:91%(16765起),负同等责任事故约占比:9%(1665起)。

3.7 性别占比

def get_scatter1():
    scatter1 = (
        Scatter()
        .add_xaxis(x_data)
        .add_yaxis('', y_data,
                  )
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='7-负利润行业数量',
                subtitle=subtitle,
                pos_top='2%',
                pos_left="center",
            ),
            visualmap_opts=opts.VisualMapOpts(
                type_='size',
            ),
        )
    )

男性事故约占比:93%(17149起),女性事故约占比:7%(1281起)。

3.8 驾驶员年龄分布

3.9 驾驶员驾龄区间分布

5-15年驾龄区间出现事故的数量较其他驾龄区间高,1年以下驾龄的新手出现事故的数量是最低的。

3.10 车辆品牌词云

def get_wordcloud(x_data,y_data):
    wordcloud = (
        WordCloud()
        .add(series_name="", data_pair, word_size_range=[5, 45])
        .set_global_opts(
            title_opts=opts.TitleOpts(
                title='10-车辆品牌词云',
                subtitle=subtitle,
                pos_top='1%',
                pos_left="1%",
            )
        )
    )

交通事故最多的10大汽车品牌:长安、五菱、大众汽车、丰田、雪佛兰、别克、解放、福克斯、北京现代、东风标致

4. 源码+数据

下载资源