サイトアイコン アマチュア無線局JS2IIU

【Streamlit】st.mapで位置データを手軽に可視化!

こんにちは、JS2IIUです。

Streamlitは、Pythonでインタラクティブなウェブアプリケーションを簡単に作成できるオープンソースライブラリです。その中でも、st.mapは位置データを地図上に表示するのに便利な関数です。この記事では、st.mapの基本的な使い方と、具体的なサンプルプログラムを通して、その使いどころ、そして注意点をご紹介します。今回もよろしくお願いします。

st.mapの基本

st.mapは、緯度と経度の情報を含むデータフレームを受け取り、地図上にマーカーとしてプロットします。地図はMapboxが使われています。

Python
st.map(data=None, *, latitude=None, longitude=None, color=None, size=None, zoom=None, use_container_width=True, width=None, height=None)

パラメータ:

その他:

基本的な使い方例:

Python
import streamlit as st
import pandas as pd

df = pd.DataFrame({
    'lat': [35.689487, 35.658581, 35.703717],
    'lon': [139.691706, 139.745433, 139.771357]
})

st.write('st.map exsample')
st.map(df)

これだけで、東京タワー、渋谷スクランブル交差点、新宿駅周辺の地図が表示されます。

サンプルプログラム

1. Uber Ridesharing Data

Uberの乗車データを使って、乗車場所を地図上に可視化してみましょう。

Python
import streamlit as st
import pandas as pd

df = pd.read_csv('uber-raw-data-apr14.csv')
df['Date/Time'] = pd.to_datetime(df['Date/Time'])
df['hour'] = df['Date/Time'].dt.hour

st.title('Uber Ridesharing Data')
st.header('Pickup Locations')
st.map(df)

st.header('Hourly Pickup Counts')
hourly_counts = df.groupby('hour').size()
st.bar_chart(hourly_counts)

このプログラムでは、uber-raw-data-apr14.csvからUberの乗車データを読み込み、st.mapで乗車場所を地図上に表示しています。さらに、乗車時間帯ごとのヒストグラムも表示することで、データの傾向をより深く理解することができます。

生成AIで作った架空のUberデータ(uber-raw-data-apr14.csv)はこちらからコピーして下さい。

Streamlit_sample_data/data/uber-raw-data-apr14.csv at main · JS2IIU-MH/Streamlit_sample_data
Sample data for blog post about Streamlit. Contribute to JS2IIU-MH/Streamlit_sample_data development by creating an account on GitHub.

2. Airbnb Listings

Airbnbのリスティングデータを使って、宿泊施設の場所と価格を地図上に可視化してみましょう。

Python
import streamlit as st
import pandas as pd

df = pd.read_csv('airbnb-listings_20.csv')

st.title('Airbnb Listings')
st.map(df[['latitude', 'longitude']])

このプログラムでは、airbnb-listings.csvからAirbnbのリスティングデータを読み込み、st.mapで宿泊施設の場所を地図上に表示しています。

架空のAirbnbデータ(airbnb-listings_20.csv)はこちらから入手して下さい。

Streamlit_sample_data/data/airbnb-listings_20.csv at main · JS2IIU-MH/Streamlit_sample_data
Sample data for blog post about Streamlit. Contribute to JS2IIU-MH/Streamlit_sample_data development by creating an account on GitHub.

3. 地震発生地点の可視化

Python
import streamlit as st
import pandas as pd

df = pd.read_csv('dataset_2195_quake.csv')

st.title('Earthquake Data')
st.map(df[['latitude', 'longitude']])

このプログラムでは、地震の発生地点を緯度経度情報のサンプルデータからst.mapで地図上に表示しています。

地震データはKaggleのQuakesを利用しています。データの構成は以下のとおりで、4カラムで構成されています。

Checking your browser - reCAPTCHA

マグニチュードのデータを使って、プロットする点の大きさを変えてみます。sizeパラメータを指定します。マグニチュードの大きさを強調するように少し計算を入れています。

Python
import streamlit as st
import pandas as pd

df = pd.read_csv('main3/dataset_2195_quake.csv')
df['richter'] = df['richter'] * df['richter'] * 10000

st.title('Earthquake Data')
st.map(df, latitude='latitude', longitude='longitude', size='richter')

st.mapを使う上での注意点

まとめ

st.mapは、Streamlitで位置データをたった数行で、簡単に可視化することができるとても強力なツールです。この記事で紹介したサンプルプログラムを参考に、ぜひご自身のアプリケーションで活用してみてください。

参考になるWEBサイト

Pythonに関する書籍の<PR>です。

24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。

最後まで読んでいただきありがとうございました。

モバイルバージョンを終了