著者:飯尾 淳
本連載では「Pythonを昔から使っているものの、それほど使いこなしてはいない」という筆者が、いろいろな日常業務をPythonで処理することで、立派な「蛇使い」に育つことを目指します。その過程を温
かく見守ってください。皆さんと共に勉強していきましょう。第10回は、データを可視化する例として、プログラムの対話型実行環境「Jupyter Notebook」をローカル環境で動かして簡単な地理情報を表示させてみます。
シェルスクリプトマガジン Vol.80は以下のリンク先でご購入できます。
図7 町丁目データを地図上に重ねて表示するためのコード
1 2 3 4 5 6 7 8 9 |
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 駅の位置と乗降客数のデータをまとめるためのコード
1 2 3 |
df2 = pd.merge(df_stations.drop('Description', axis=1), \ df_passengers, on='Name') df2.head() |
図12 駅の位置を地図に表示するためのコード(その1)
1 2 3 4 5 6 |
for _, row in df2.iterrows(): folium.Marker( location=[row['geometry'].y, row['geometry'].x], popup=row['Name'] ).add_to(m) m |
図14 駅の位置を地図に表示するためのコード(その2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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 「緯度」「経度」「乗降客数」のカラムを持つデータフレームを作成するためのコード
1 2 3 4 5 |
df3 = pd.DataFrame(data={'Lat': df2[‘geometry'].y, 'Lng': df2['geometry'].x, 'Passengers': df2['Passengers']}) df3.head() |