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

科技   科技   2025-01-15 08:11   天津  
点击上方"蓝字",关注"Python当打之年"
后台回复"1",领取众多Python学习资料

大家好,我是欧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.4 删除不负责任的数据
df = df[~(df['责任划分'] == '不负责任')]
2.5 时间数据处理
df['事故时间_年'] = df['时间_td'].dt.year
df['事故时间_月'] = df['时间_td'].dt.month
df['事故时间_日'] = df['时间_td'].dt.day
df['事故时间_时'] = df['时间_td'].dt.hour
2.6 驾驶员出生日期数据处理
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. 源码
👉 公众号后台回复可视化项目源码获取更多可视化代码+数据

👉 在线运行:

https://www.heywhale.com/home/column/60e2740e3aeb9c0017b967a2
END

以上就是本期为大家整理的全部内容了,喜欢的朋友可以点赞、点在看也可以分享让更多人知道。

 往期推荐 

源码下载 | 【01-50】Pthon可视化系列文章资源(源码+数据)

爬虫 | Python爬取某平台杭州二手房数据

爬虫 | Python搞定软科中国大学排名

爬虫 | Python爬取胡润百富榜数据

爬虫 | Python爬取微博实时热搜榜信息

爬虫 | Python爬取B站榜排行榜信息

可视化 | Flask+Mysql+Echarts 豆瓣电影Top250数据分析系统

56 | 2024年中国500强企业数据分析可视化

55 | 实习僧网Python岗位招聘数据分析可视化

54 | 2024年美国总统大选数据分析可视化

53 | 基于Lasso回归和随机森林的上海链家二手房房价预测

53 | 上海链家二手房数据分析可视化

52 | 基于KNN近邻和随机森林模型对用户转化进行分析与预测

51 | 深圳市共享单车数据分析可视化

01-50 | Pthon可视化系列文章资源(源码+数据)

Pandas+Pyecharts | 全国热门旅游景点数据分析可视化

可视化 | 再分享一套Flask+Pyecharts可视化模板二

可视化 | 分享一套Flask+Pyecharts可视化模板

可视化 | Python直观展示中国代表团冬奥会荣耀时刻

用Python分析了3W+《独行月球》影评数据,看看观众们怎么说~

Matplotlib | 世界足球俱乐部排名可视化

40000+条考研信息数据可视化(学校、专业分数分布)

【在看】的您又变好看了呢

Python当打之年
当打之年,专注于各领域Python技术,量的积累,质的飞跃。后台回复:【可视化项目源码】可获取可视化系列文章源码和数据
 最新文章