본문 바로가기
인공지능/데이터 분석

[데이터 분석] PyDeck 라이브러리

by 클레어몬트 2024. 12. 28.

ㅁPyDeck 라이브러리: Python 환경에서 지도 기반의 대화형 데이터 시각화를 쉽게 구현할 수 있도록 돕는 강력한 라이브러리

PyDeck은 Python에서 Deck.gl의 기능을 사용할 수 있도록 설계된 라이브러리이다

 

ㅇDeck.gl: Uber에서 개발한 오픈소스 지리공간 시각화 프레임워크

PyDeck은 이 Deck.gl을 Python 환경으로 가져와 데이터 분석가들이 손쉽게 지도 기반 데이터를 시각화할 수 있도록 지원한다

 

 

대화형 데이터란?

사용자가 데이터와 직접 상호작용할 수 있도록 설계된 데이터를 의미한다. 이는 데이터 시각화나 분석 과정에서 사용자가 원하는 방식으로 데이터를 탐색하거나 조작할 수 있게 만들어 준다. 대화형 데이터의 가장 큰 특징은 정적인 데이터가 아니라 동적으로 반응하는 데이터라는 점이다.

 


[PyDeck의 주요 특징]

  1. 지도 기반 데이터 시각화
    PyDeck은 위도와 경도를 기반으로 한 데이터 시각화에 특화되어 있다. 2D 또는 3D 형태의 데이터를 처리할 수 있으며, 다양한 지도 스타일을 제공한다.
  2. 대화형 사용자 경험
    PyDeck은 상호작용이 가능한 시각화를 구현할 수 있다. 예를 들어, 사용자가 지도상의 요소를 클릭하면 해당 데이터를 조회하거나 분석할 수 있다.
  3. 웹 및 Jupyter Notebook 통합
    PyDeck은 브라우저 기반 렌더링을 지원하며, Jupyter Notebook과도 완벽히 통합되어 데이터 분석 워크플로우를 효율적으로 지원한다.
  4. 다양한 레이어 지원
    PyDeck은 Scatterplot, Heatmap, Arc, Hexagon 등 여러 유형의 레이어를 제공하여 다양한 형태의 데이터를 시각화할 수 있다.

 

 

(설치 명령어) 다른 파이썬 라이브러리들과 똑같다

pip install pydeck

 

 

(라이브러리 호출 예시)

import pydeck as pdk
print(pdk.__version__)  # 설치된 PyDeck 버전 확인

 

 

[PyDeck 사용 예제]

 

1. 간단한 지도 시각화

(주요 도시의 위치를 지도 위에 시각화하는 예제 코드)

import pydeck as pdk

# 도시 데이터
data = [
    {"position": [126.977945, 37.566535], "name": "서울"},
    {"position": [139.691711, 35.689487], "name": "도쿄"},
    {"position": [116.407396, 39.904200], "name": "베이징"},
]

# ScatterplotLayer 설정
layer = pdk.Layer(
    "ScatterplotLayer",            # 레이어 타입
    data,                          # 시각화 데이터
    get_position="position",       # 위치 데이터 (위도, 경도)
    get_radius=100000,             # 원의 반경
    get_color=[255, 0, 0],         # 원의 색상
    pickable=True,                 # 클릭 가능 여부
)

# ViewState 설정
view = pdk.ViewState(latitude=37.566535, longitude=126.977945, zoom=3)

# PyDeck 렌더링
r = pdk.Deck(layers=[layer], initial_view_state=view)
r.show()

 

위 코드를 실행하면 서울을 중심으로 한 대화형 지도를 렌더링할 수 있다. 사용자가 특정 점을 클릭하면 데이터 정보를 확인할 수 있다.

 

 

2. 히트맵 생성

PyDeck의 HeatmapLayer를 사용하여 데이터의 밀도를 표현할 수 있다

# 히트맵 데이터
data = [
    {"position": [126.977945, 37.566535], "weight": 1},
    {"position": [126.982745, 37.570845], "weight": 2},
    {"position": [126.988345, 37.573245], "weight": 3},
]

# HeatmapLayer 설정
heatmap_layer = pdk.Layer(
    "HeatmapLayer",
    data,
    get_position="position",
    get_weight="weight",
    radiusPixels=50,
)

# ViewState 설정
view = pdk.ViewState(latitude=37.566535, longitude=126.977945, zoom=14)

# PyDeck 렌더링
heatmap = pdk.Deck(layers=[heatmap_layer], initial_view_state=view)
heatmap.show()

 

위 코드는 지정된 위치의 데이터 밀도를 히트맵 형태로 표시한다

 

[PyDeck의 활용 사례]

  1. 교통 데이터 분석
    도시 내 차량 흐름 데이터 또는 교통 체증 분석에 활용할 수 있다
  2. 환경 데이터 시각화
    공기 오염도, 기온 변화, 물 사용량 등 환경 데이터를 시각화하는 데 유용하다
  3. 물류 및 배송 경로 시각화
    물류 네트워크와 배송 경로를 3D로 렌더링하여 효율성을 분석할 수 있다

 

PyDeck은 간단한 코드로 대화형 데이터를 렌더링 할 수 있어 데이터 분석과 발표 과정에서 매우 유용하다. 데이터의 위치 정보를 활용하여 효율적으로 분석하고자 한다면 PyDeck은 꼭 사용해 볼 만한 도구이다. 위의 내용 외에도 PyDeck의 고급 기능이나 다른 레이어들이 있으므로, 활용 방법은 관련 공식 문서를 참고하기 바란다!

 

 

 

 

 

 

(활용 프로젝트)

https://github.com/drone-skynet/seoul_metro_visualizer

 

GitHub - drone-skynet/seoul_metro_visualizer: 2024년 서울시 지하철 시간대별 이용 데이터를 지도에 시각화

2024년 서울시 지하철 시간대별 이용 데이터를 지도에 시각화하는 Streamlit 기반 애플리케이션 - drone-skynet/seoul_metro_visualizer

github.com