シェルスクリプトマガジン

Pythonあれこれ(Vol.80掲載)

著者:飯尾 淳

本連載では「Pythonを昔から使っているものの、それほど使いこなしてはいない」という筆者が、いろいろな日常業務をPythonで処理することで、立派な「蛇使い」に育つことを目指します。その過程を温
かく見守ってください。皆さんと共に勉強していきましょう。第10回は、データを可視化する例として、プログラムの対話型実行環境「Jupyter Notebook」をローカル環境で動かして簡単な地理情報を表示させてみます。

シェルスクリプトマガジン Vol.80は以下のリンク先でご購入できます。

図7 町丁目データを地図上に重ねて表示するためのコード

for _, r in df.iterrows():
    sim_geo = gpd.GeoSeries(r['geometry'])
    geo_j = sim_geo.to_json()
    geo_j = folium.GeoJson(data=geo_j,
      style_function=lambda x: {'fillColor': 'grey', 'color': 'grey', 
        'weight': 0.5, 'fill_opacity': 0.3, 'line_opacity': 0.1 })
    folium.Popup(r['Name']).add_to(geo_j)
    geo_j.add_to(m)
m

図10 駅の位置と乗降客数のデータをまとめるためのコード

df2 = pd.merge(df_stations.drop('Description', axis=1), \
                df_passengers, on='Name')
df2.head()

図12 駅の位置を地図に表示するためのコード(その1)

for _, row in df2.iterrows():
    folium.Marker(
        location=[row['geometry'].y, row['geometry'].x],
        popup=row['Name']
    ).add_to(m)
m

図14 駅の位置を地図に表示するためのコード(その2)

m = folium.Map(location=[35.65, 139.34], \
       zoom_start=12, tiles=‘openstreetmap’)

for _, r in df.iterrows():
    sim_geo = gpd.GeoSeries(r['geometry'])
    geo_j = sim_geo.to_json()
    geo_j = folium.GeoJson(data=geo_j,
      style_function=lambda x: {'fillColor': 'grey', 'color': 'grey', 
        'weight': 0.5, 'fill_opacity': 0.3, 'line_opacity': 0.1 })
    folium.Popup(r['Name']).add_to(geo_j)
    geo_j.add_to(m)

for _, row in df2.iterrows():
    folium.CircleMarker(
        location=[row['geometry'].y, row['geometry'].x],
        radius=3,
        color='red',
        fill_color='red',
        weight=2
    ).add_to(m)
m

図16 「緯度」「経度」「乗降客数」のカラムを持つデータフレームを作成するためのコード

df3 = pd.DataFrame(data={'Lat': df2[‘geometry'].y,
                         'Lng': df2['geometry'].x, 
                         'Passengers': df2['Passengers']})
 
df3.head()