Streamlit에서 대화형 지도 표시하기: 쉬운 튜토리얼 및 예제 | st.map
Updated on
Streamlit은 데이터 애플리케이션을 구축하는 방법을 혁신했습니다. 데이터 과학자와 개발자들이 쉽게 대화형 웹 애플리케이션을 만들 수 있도록 도와주는 강력한 오픈 소스 Python 라이브러리입니다. 가장 흥미로운 기능 중 하나는 st.map
인데, 이 기능은 사용자가 대화형 지도를 만들고 표시할 수 있게 해줍니다. 본 문서에서는 st.map
의 복잡한 내용을 심층적으로 다루며, 실용적인 예제와 튜토리얼을 제공하여 데이터 시각화 기술을 향상시킬 수 있도록 도와드립니다.
데이터 분석과 머신 러닝의 세계에서 위치 데이터는 중요한 역할을 합니다. 질병 확산 추적, 교통 패턴 분석, 고객 인구 통계 분석 등의 작업을 수행할 때, 지도는 이해하기 쉽고 해석하기 쉬운 시각적인 표현을 제공합니다. Streamlit의 st.map
함수는 이러한 위치 데이터의 표시를 간단하게 만들어주는 강력한 도구입니다.
Streamlit에서 st.map 이해하기
Streamlit에서의 st.map이란 무엇인가요?
Streamlit에서 st.map
은 지도를 만들고 데이터 포인트를 플롯할 수 있는 함수입니다. 이는 folium
라이브러리를 래핑한 것으로, 지리 공간 데이터 시각화에 사용되는 강력한 Python 라이브러리입니다. st.map
함수는 "lat" 및 "lon" 또는 "latitude" 및 "longitude"이라는 이름을 가진 지정된 열을 포함하는 판다스 DataFrame을 가져와 지도에 그립니다.
import streamlit as st
import pandas as pd
## 위도와 경도 값을 가진 샘플 DataFrame 생성
data = pd.DataFrame({
'latitude': [37.7749, 34.0522, 40.7128],
'longitude': [-122.4194, -118.2437, -74.0060]
})
## 데이터를 사용하여 지도 생성
st.map(data)
이 간단한 코드 조각은 지도를 생성하고 DataFrame에서 데이터 포인트를 플롯합니다. 지도는 자동으로 데이터 포인트의 가운데를 중심으로 하고 줌 수준을 자동으로 조정합니다.
Streamlit에서 지도 표시하기
Streamlit에서 지도를 표시하는 것은 적절한 데이터로 st.map
함수를 호출하는 것만으로 간단합니다. 그러나 이 기능을 최대한 활용하려면 데이터를 조작하고 지도를 사용자의 요구에 맞게 사용자 정의하는 방법을 이해하는 것이 중요합니다.
예를 들어, zoom
매개변수에 정수 값을 전달하여 지도의 줌 수준을 수동으로 조정할 수 있습니다. 높은 값은 데이터 포인트에 더 가까이 확대하고, 낮은 값은 축소합니다.
## 설정된 줌 수준으로 지도 생성
st.map(data, zoom=10)
Streamlit 앱에 GeoJSON 지도 추가하기
GeoJSON이란 무엇인가요?
GeoJSON은 다양한 지리적 데이터 구조를 인코딩하기 위한 형식입니다. Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon 및 GeometryCollection을 포함하는 다양한 지리 데이터 유형을 지원합니다. GeoJSON은 맵을 생성하기 위해 JSON 표준을 사용하므로 다양한 응용 프로그램에서 쉽게 사용할 수 있습니다.
Streamlit 앱에 GeoJSON 지도 추가하는 방법
GeoJSON 맵을 Streamlit 앱에 추가하는 방법은 GeoJSON 데이터를 DataFrame으로 읽은 다음 해당 DataFrame을 st.map
함수에 전달하는 것입니다. 다음은 이를 수행하는 예시입니다:
import geopandas as gpd
# GeoJSON 데이터를 GeoDataFrame으로 읽기
gdf = gpd.read_file('path_to_your_geojson_file.geojson')
# GeoDataFrame을 DataFrame으로 변환
df = pd.DataFrame(gdf)
# GeoJSON 데이터로 지도 생성
st.map(df)
이 예제에서 우리는 geopandas
라이브러리를 사용하여 GeoJSON 데이터를 GeoDataFrame으로 읽습니다. 그런 다음 이 GeoDataFrame을 일반적인 pandas DataFrame으로 변환하여 st.map
함수에 전달할 수 있습니다.
st.map 기능으로 지도 향상하기
Streamlit의 st.map
함수에는 사용자가 지도를 향상시킬 수 있는 다양한 기능이 포함되어 있습니다. 이에는 사용자 정의 마커 추가, 줌 수준 조정, 데이터 포인트를 중심으로 맵을 자동으로 정렬하는 기능 등이 있습니다.
사용자 정의 마커 추가
지도에 사용자 정의 마커를 추가하면 특정 데이터 포인트를 강조할 수 있습니다. 사용자 정의 마커를 추가하려면 경도와 위도 값을 포함하는 별도의 DataFrame을 만들어야 합니다.
# 강조하려는 포인트를 포함하는 DataFrame 생성
highlight = pd.DataFrame({
'latitude': [37.7749],
'longitude': [-122.4194]
})
# 강조 포인트를 지도에 추가
st.map(data, highlight)
이 예제에서는 지도에서 단일 포인트를 강조하고 있습니다. highlight
DataFrame에는 이 포인트의 위도와 경도 값이 포함되어 있습니다. 이 DataFrame을 원래 데이터와 함께 st.map
함수에 전달합니다.
줌 및 자동 중심 정렬
st.map
함수는 자동으로 데이터 포인트를 중심으로 지도를 정렬하고 줌 수준을 조정합니다. 그러나 수동으로 줌 수준과 지도의 중심을 조정할 수도 있습니다.
# 지정된 줌 수준과 중심으로 지도 생성
st.map(data, zoom=10, center=[37.7749, -122.4194])
이 예제에서는 줌 수준을 10으로 설정하고 지도의 중심을 좌표 [37.7749, -122.4194] 주변으로 맞춥니다. center
매개변수는 주어진 두 값의 목록을 사용하며, 지도를 중심으로 하려는 지점의 위도와 경도입니다.
st.map 문제 해결
st.map
은 강력한 도구입니다만, 사용 중 문제가 발생할 수 있습니다. "st.map이 작동하지 않음" 오류는 대표적인 문제입니다. 이는 st.map
에 전달된 DataFrame에 올바른 열이 포함되어 있지 않거나 열 이름이 올바르게 지정되지 않은 경우에 발생합니다. 기억해야 할 점은 st.map
이 "lat" 및 "lon" 또는 "latitude" 및 "longitude"이라는 이름을 가진 열이 있는 DataFrame을 필요로 한다는 것입니다.
이 문제가 발생하는 경우 DataFrame이 올바른 열을 가지고 있는지와 열이 적절하게 이름이 지정되었는지 확인하십시오.
Streamlit에서 대화형 지도 만들기
대화형 지도는 데이터 시각화에 강력한 도구입니다. 사용자는 확대 및 축소, 다른 지역을 표시하거나 데이터 지점을 클릭하여 추가 정보를 얻는 등의 기능을 사용할 수 있습니다. Streamlit의 st.map
함수를 사용하면 이러한 대화형 지도를 쉽게 생성할 수 있습니다.
대화형 지도를 포함하는 쉬운 방법
Streamlit 앱에 대화형 지도를 포함하는 것은 경도 및 위도 값을 포함하는 DataFrame을 st.map
함수에 전달하는 것만으로 간단합니다. 그러나 사용자 정의 마커, 팝업 정보 등과 같은 상호 작용을 추가하여 지도를 더욱 향상시킬 수도 있습니다.
예를 들어, 데이터 지점을 클릭할 때 해당 데이터에 대한 자세한 정보를 표시하는 팝업 기능을 추가할 수 있습니다. 이는 표시하려는 정보와 함께 DataFrame에 추가 열을 추가함으로써 수행할 수 있습니다.
# 팝업 정보를 위한 추가 열 추가
data['info'] = ['San Francisco', 'Los Angeles', 'New York']
# 데이터를 사용하여 지도 생성
st.map(data)
이 예제에서 데이터 지점을 클릭하면 해당 도시의 이름이 표시됩니다.
Streamlit 및 Folium을 사용한 지도 표시
st.map
은 지도를 생성하는 강력한 도구이지만 Folium과 같은 다른 라이브러리도 사용하여 더 복잡한 지도를 만들 수 있습니다. Folium은 Leaflet.js를 사용하여 대화형 모바일 친화적인 지도를 만들 수 있는 인기 있는 오픈 소스 JavaScript 라이브러리인 Python 라이브러리입니다.
Streamlit에서 Folium 지도를 표시하려면 st.pydeck_chart
함수를 사용할 수 있습니다. 다음은 예제입니다.
import folium
# Folium 지도 생성
m = folium.Map(location=[37.7749, -122.4194], zoom_start=10)
# Streamlit에서 지도 표시
st.pydeck_chart(m)
이 예제에서는 좌표 [37.7749, -122.4194]를 중심으로 하는 Folium 지도를 10의 확대 수준으로 생성합니다. 그런 다음 st.pydeck_chart
함수를 사용하여 이 지도를 Streamlit에서 표시합니다.
대화형 지도 생성에 대한 Streamlit의 기능은 여기서 설명한 것만 일부입니다. Python과 Streamlit, Folium과 같은 라이브러리의 기능을 결합하여 무한한 가능성을 창출할 수 있습니다. 데이터 시각화를 위한 데이터 과학자나 데이터 기반 웹 앱을 개발하는 개발자 모두에게 대화형 지도는 강력한 도구입니다.
Streamlit을 사용하여 데이터 시각화 향상하기
Streamlit의 st.map
함수는 데이터 시각화에 강력한 도구입니다. 대화형 지도를 생성할 수 있도록 해주므로 데이터를 시각적으로 표현하여 쉽게 이해하고 해석할 수 있습니다. 이 섹션에서는 st.map
의 고급 기능과 데이터 시각화 향상을 위해 이러한 기능을 활용하는 방법에 대해 알아보겠습니다.
st.map의 고급 기능
st.map
의 주요 기능 중 하나는 대용량 데이터셋을 처리할 수 있는 능력입니다. 이 함수를 사용하여 수 천 개의 데이터 지점을 지도에 효율적으로 플롯할 수 있으며 앱의 성능 저하를 최소화할 수 있습니다. 이는 대용량 데이터의 시각화에 이상적인 도구입니다.
st.map
의 또 다른 고급 기능은 다른 Python 라이브러리와의 호환성입니다. 데이터 조작을 위해 pandas
, 수치 계산을 위해 numpy
, 추가 시각화 옵션을 위해 matplotlib
과 같은 라이브러리를 사용할 수 있습니다. 이러한 상호 운용성은 데이터 시각화에 유연성을 제공하는 다재다능한 도구로 st.map
을 만듭니다.
st.map을 사용한 데이터 시각화 예제
st.map
의 기능을 보여주기 위해 데이터 시각화 예제를 살펴보겠습니다. 뉴욕 시에서 에어비앤비 숙소의 데이터셋이 있다고 가정해 보겠습니다. st.map
을 사용하여 이러한 숙소를 지도에 표시하고 뉴욕 시 내에서의 에어비앤비 숙소 분포를 파악할 수 있습니다.
# 데이터셋 로드
data = pd.read_csv('nyc_airbnb_listings.csv')
# 데이터를 사용하여 지도 생성
st.map(data)
이 예제에서는 지도상의 각 데이터 지점이 에어비앤비 숙소를 나타냅니다. 이 데이터를 지도상에 시각화함으로써 어떤 지역에서 에어비앤비 숙소가 가장 많은지 쉽게 파악할 수 있습니다.
PyGWalker를 사용하여 Streamlit에서 쉽게 대화형 데이터 시각화 생성
PyGWalker (opens in a new tab)는 Streamlit AgGrid의 대체재로 훌륭한 작업을 수행하는 또 다른 훌륭한 도구입니다.
PyGWalker + Streamlit 온라인 데모 (opens in a new tab)
PyGWalker는 Tableau와 유사한 UI를 Streamlit 앱에 손쉽게 삽입할 수 있는 Python 라이브러리입니다.
Data Visualization Python Library와 함께 Streamlit 앱에 강력한 기능을 제공하는 자세한 단계를 보여주는 Coding is Fun (opens in a new tab)의 멋진 비디오를 확인하세요!
PyGWalker 커뮤니티에 큰 기여를 한 Sven (opens in a new tab)에게 특별한 감사를 전합니다!
또한 다음 리소스도 확인해 볼 수 있습니다:
- PyGWalker 및 Streamlit을 사용한 데이터 탐색과 결과 공유 (opens in a new tab)
- 추가적인 PyGWalker 예제를 위한 PyGWalker GitHub 페이지 (opens in a new tab)를 참조하세요.
결론
Streamlit의 st.map
함수는 대화형 지도를 생성하고 지리 공간 데이터를 시각화하는 강력한 도구입니다. 데이터를 시각적으로 표현하여 이해하고 분석하기 쉽도록 해주므로 데이터 과학자나 데이터 기반 웹 앱을 개발하는 개발자에게 간단하고 효율적인 방법으로 대화형 지도를 만들 수 있는 기능을 제공합니다. 고급 기능과 다른 Python 라이브러리와의 호환성을 갖춘 st.map
은 데이터 시각화와 분석을 향상시킬 수 있는 다재다능한 도구입니다.
자주 묻는 질문
Streamlit에서 지도를 만드는 방법은?
Streamlit에서 지도를 만드는 것은 간단합니다. 위도와 경도 값을 포함하는 판다스 DataFrame이 필요합니다. 그런 다음 이 DataFrame을 st.map
함수에 전달하여 지도를 생성할 수 있습니다.
대화형 위치 지도를 어떻게 만들 수 있나요?
st.map
함수를 사용하여 Streamlit에서 대화형 위치 지도를 만들 수 있습니다. 이 함수는 지도를 생성하고 데이터 포인트를 플롯합니다. 이 지도는 상호 작용적이며, 확대/축소 및 다른 지역으로 이동할 수 있습니다. 또한 맞춤 마커와 팝업 정보를 추가하여 지도의 상호 작용성을 강화할 수 있습니다.
Streamlit에는 API가 있나요?
네, Streamlit에는 인터랙티브 웹 애플리케이션을 만들 수 있는 간단하고 직관적인 API가 있습니다. 이 API는 지도, 차트, 테이블을 포함한 다양한 종류의 시각화를 생성하기 위한 여러 가지 함수를 제공합니다. 또한 버튼, 슬라이더, 텍스트 입력과 같은 상호 작용을 앱에 추가하는 데에도 API를 사용할 수 있습니다.