オープンデータ用いたデータ可視化

内容

pythonのFoliumライブラリを使用して、地図上にデータをプロットし表示する簡単なプログラムを作成しました。

Foliumは、Pythonで利用できるインタラクティブな地図を作成するためのライブラリです。Foliumを使うと、地理空間データを地図上に簡単にプロットしたり、地図をカスタマイズして異なるタイプの地図レイヤーやインタラクティブな要素(マーカー、ライン、ポリゴンなど)を追加することが可能です。

使用するデータ

出典 : https://data.e-gov.go.jp/

デジタル庁が整備、運営する e-govからデータを取得しています。

鉄軌道駅施設に関するデータ(JR)

鉄軌道駅施設に関するデータ(私鉄)

コード

それぞれのデータフレームをpandasで読み込み、カラムを追加してJR,私鉄を区別しています。
JRは青、私鉄は赤のマーカーを地図上にプロットして表示します。

import pandas as pd
import folium

# データをロードします。エンコーディングを'SJIS'に設定します
data_jr = pd.read_csv('mlit_jr_sta.csv', encoding='SJIS')
data_pr = pd.read_csv('mlit_pr_tram_sta.csv', encoding='SJIS')


# data_jr はJRの駅データ、data_pr は私鉄の駅データです
# それぞれのデータフレームを結合し、区別するための列を追加します
data_jr['鉄道事業者名'] = 'JR'
data_pr['鉄道事業者名'] = '私鉄'
data = pd.concat([data_jr, data_pr])

# 基本的な地図を作成します
# 地図の中心は、データの緯度と経度の平均値に設定します  
m = folium.Map(location=[data['緯度'].mean(), data['経度'].mean()], zoom_start=13)

# データフレームをループ処理し、各行に対してマーカーを地図に追加します
# JRの駅は青、私鉄の駅は赤で表示します
for idx, row in data.iterrows():
    if row['鉄道事業者名'] == 'JR':
        color = 'blue'
    else:
        color = 'red'
    folium.Marker(location=[row['緯度'], row['経度']], 
                  popup=f"{row['鉄道事業者名']}, {row['鉄道駅の名称']}, {row['路線名']}",
                  icon=folium.Icon(color=color)).add_to(m)
    

# 地図を表示します
m

結果は下のようになります。

コメント

タイトルとURLをコピーしました