0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

交通事故オープンデータを色々分析してみる2(データ可視化編)

Posted at

はじめに

警察庁から交通事故の詳細なデータがオープンデータとして公開されています。

このデータを色々こねてみて、最終的には交通事故発生予想みたいなことをしたい。

前回は交通事故データを読み込んでヒートマップで表示するところまでをやりました。

今回は、個別の事故位置を地図上に表示し、各データを表示してみようと思います。

時系列ヒートマップの作製

本題に移る前に、前回実施したヒートマップを時系列変化で表示する方法があったのでやってみます。

まず前回のデータの緯度経度を1時間ごとに区切ってlist化します。

honhyo2023_all_latlon_24 = [[] for _ in range(24)]

for ind, row in honhyo2023.iterrows():
    h = row["datetime"].hour
    honhyo2023_all_latlon_24[h].append([row["lat"], row["lon"]])

次にfoliumのHeatMapWithTime機能を使って1時間ごとの時系列表示をできるようにします。

from folium.plugins import HeatMapWithTime

map = folium.Map(location=[35, 139], zoom_start=9, tiles='cartodbdark_matter')
HeatMapWithTime(data=honhyo2023_all_latlon_24).add_to(map)
map

当然ですが深夜は事故が少なくて日中は多いですね。描画も重くなってます。
朝9時くらいがピークに見えます。
a.gif

個別の事故位置を地図上で表示する

ヒートマップでは事故発生場所の分布がわかりますが個別の発生地点は分かりません。
なので個別の位置がわかるように地図表示します。

ただし、2023年だけで30万件以上の事故情報があるため、すべて表示してしまうと固まってしまいます。
そこで、foliumのMarkerClusterを使用してまとまって表示できるようにします。

map = folium.Map(location=[35, 139], zoom_start=9, tiles='cartodbdark_matter')
marker_cluster = MarkerCluster().add_to(map)
for i in range(0, len(honhyo2023)):
    folium.Marker(
        location=[honhyo2023["lat"][i], honhyo2023["lon"][i]],
    ).add_to(marker_cluster)
map

結果がこちら
縮小するとまとめて表示され、
image.png

拡大すると分かれて表示されていきます。
image.png
image.png

終わりに

この記事では警察庁の交通事故オープンデータをヒートマップとマーカーを使って可視化しました。
事故地点まで可視化したので次は事故情報も同時に可視化できるようにしたいと思います。

0
4
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
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?