【Streamlit】地図上にデータをプロット:st.mapの基本

Streamlit
この記事は約5分で読めます。

こんにちは、JS2IIUです。
地図を表示し、その上に何かの情報、例えばある地域の小学校の分布、交通事故の多い交差点の分布など簡単にを表示できるのがst.mapです。基本的な使い方を見ていきます。今回もよろしくお願いします。

1. はじめに

この記事では、Streamlitを使って、緯度・経度のデータを地図上に簡単に表示する方法を紹介します。
特別な地図ライブラリを使わなくても、st.mapだけで直感的にマッピングができるので、初心者にもおすすめです。

「地図上にお店の位置を表示したい」「観光地マップを作りたい」と思ったことがある方は、ぜひ参考にしてみてください!

2. st.mapとは?

st.mapは、Streamlitに用意されている地図表示用の関数です。
緯度(latitude)と経度(longitude)の情報を持ったデータを与えると、インタラクティブな地図上にポイントをプロットしてくれます。

特別な設定は必要なく、PandasのDataFrameをそのまま渡すだけでOKです!

3. 最小限のサンプルコード

まずは、最もシンプルなコードで地図を表示してみましょう。
たった数行で地図表示ができてしまいます!

Python
import streamlit as st
import pandas as pd

# 緯度・経度データを作成
data = pd.DataFrame({
    'lat': [35.6895],
    'lon': [139.6917]
})

# 地図上にデータをプロット
st.map(data)

このコードのポイント

  • lat(緯度)とlon(経度)の2列を持つDataFrameを作成します。
  • そのDataFrameをそのままst.mapに渡すだけ!

これをStreamlitアプリとして実行すると、東京(新宿付近)が地図上にプロットされます。

4. データを複数追加してみよう

今度は、複数の地点を地図に表示してみましょう。
次のコードでは、東京・大阪・札幌の3都市をプロットします。

Python
import streamlit as st
import pandas as pd

# 複数地点のデータ
data = pd.DataFrame({
    'lat': [35.6895, 34.6937, 43.0667],
    'lon': [139.6917, 135.5023, 141.3500]
})

# 地図上にデータをプロット
st.map(data)

これを実行すると、日本全国をまたいだ複数の点が地図上に表示されます。
拡大・縮小やドラッグで、自由に地図を動かして確認することができます。

5. 自分のデータを地図に表示する

「自分で持っているCSVデータを地図に表示したい!」という場合も、Streamlitならとても簡単です。
ここでは、CSVファイルをアップロードして表示するサンプルを紹介します。

Python
import streamlit as st
import pandas as pd

# ファイルアップロード
uploaded_file = st.file_uploader("CSVファイルをアップロードしてください", type="csv")

if uploaded_file is not None:
    # CSVを読み込み
    df = pd.read_csv(uploaded_file)

    # 地図にプロット
    st.map(df)

注意点

  • CSVファイルには、必ずlatlonというカラムが必要です。
  • 緯度・経度のデータは数値型(float)である必要があります。

例:正しいCSVの中身

latlon
35.6895139.6917
34.6937135.5023
43.0667141.3500
Plaintext
lat,lon
35.6895,139.6917
34.6937,135.5023
43.0667,141.3500

6. 注意点・よくあるエラー

実際に使ってみると、次のようなポイントでエラーが出ることがあります。
事前にチェックしておきましょう!

  • カラム名が違うと動かない
    latitudelongitudeではなく、latlonで統一しましょう。
  • データ型が文字列だと表示されない
    → 数値(float型)で保存されているか確認しましょう。
  • 緯度・経度が不正な値だと表示されない
    → 緯度は -90〜90、経度は -180〜180 の範囲である必要があります。

7. まとめ

st.mapを使えば、たった数行でインタラクティブな地図プロットが実現できます!

  • シンプルなデータから始めて、複数地点も簡単に表示可能
  • CSVファイルを読み込めば、自分だけのマップアプリも作れる
  • さらにカスタマイズしたい場合は、st.pydeck_chartなど高度な機能にもチャレンジできる

まずはこの記事のサンプルを動かして、楽しく地図表示を体験してみてください!

8. 参考リンク

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

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

コメント

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