plotly로 시작하는 인터랙티브 데이터 시각화
- 데이터 시각화: 데이터 분석 결과를 사람들이 이해하기 쉽도록 다양한 그래픽 요소를 사용하여 데이터의 특성을 표현하는 방법
- 일반적으로 데이터는 표, 플롯, 그래프로 구성된 차트, 인포그래픽, 다이어그램 또는 지도 형태로 시각화 됨
- 데이터 시각화 활용 사례
- 데이터 간의 상관관계, 시간 경과에 따른 추세, 빈도, 시장 조사, 위험 및 보상, 시장 대응
- 데이터 과학(data science): 데이터를 다루고, 모델링하고, 분석하고, 예측하는 일련의 과정
- 데이터를 수집하고, 전처리하고, 클리닝(cleaning)하는 과정을 거친 후 EDA와 모델링을 통해 분석 및 예측을 진행하고, 분석 결과를 문서화하기 위한 시각화 단계로 마무리 됨
- 빅데이터 시대의 비즈니스 환경에서 효율적인 의사 결정을 하기 위해서는 수많은 데이터를 보기 쉽게 정리하고 이를 통한 스토리텔링을 통해 설득할 수 있는 데이터 리터러시가 중요한 요소가 되었음
-
- 데이터 리터러시: 데이터를 요약하고 분석하여 청중이 알기 쉽게 정리한 결과를 적절한 양식으로 작성하여 전달하는 능력
- 데이터는 수많은 수치와 문자들로 이루어져 있어 사람이 이해하기 어려움. 하지만 이를 시각화하면 아래와 같은 이점이 있음
- 데이터 이해가 편리, 빠른 의사 결정, 청중의 주의력과 집중력 향상, 데이터 패턴의 파악, 이상치 및 오륫값 검출, 데이터 스토리텔링, 비즈니스 인사이트
- One look is worth a thousand words. / 백 번 듣는 것보다 한 번 보는 것이 낫다 / 백문이 불여일견
- 분포(distribution): 데이터들이 전반적으로 어떻게 혹은 얼마나 흩어져 있는지를 파악(평균, 중앙값, 범위, 분산, 표준편차)
- 비교(comparison): 특정 변수의 변화에 따른 값들의 차이를 확인하기 위해 사용(막대그래프, 선 그래프, 히트맵 등)
- 추세(trend): 시간의 흐름에 따른 값의 변화를 표현하는 방법(선 그래프를 많이 사용하며 막대그래프도 가능)
- 구성(composition): 전체에 대한 비율(백분율)을 시각적으로 표현하는 데 사용(원그래프 또는 막대그래프)
- 상관관계(correlation): 독립변수(x)와 종속변수(y)로 정의되는 데이터를 시각화하여 이 두 변수간의 전체적인 분포가 어떤 관계를 맺고 있는지를 보여줌(산점도)
- 지리(geographic): 데이터를 지도나 약도 위에 표현함으로써 지역 간의 데이터의 차이를 보여주는 시각화 방법
- 차트, 플롯, 그래프에 대한 명확한 구분은 없으며 차트, 플롯, 그래프라는 용어를 혼용하여 사용
- 차트(chart): 특정 문제에 대해 여러 청중을 대상으로 브리핑하기 위해 문자, 숫자, 그래프, 플롯 등을 활용하여 만든 자료
- 파이 차트, 도넛 차트 등
- 플롯(plot): 주로 데이터의 위치를 직접 표현하는 시각화 방법
- 산점도, 박스 플롯, 바이올린 플롯 등
- 그래프(graph): 점과 점들을 잇는 선으로 구성된 구조
- 선 그래프, 막대그래프 등
- 다이어그램(diagram): 기술적 유형의 집합과 데이터의 성질을 표현하기 위해 선, 화살표 등의 시각적 고리들로 연결된 형태의 유형
- 순서도, 벤다이어그램, 차트, 표 등
- 캐나다의 데이터 시각화 전문 회사의 이름, 이 회사가 만든 가장 우명한 제품이 Plotly 시각화 패키지
- Plotly 시각화 패키지는 파이썬, R, 자바스크립트, 매트랩 등 다양한 언어에서 사용 가능
- plotly 패키지 설치:
pip install plotly
- Plotly: 시각화 생성을 위한 다양한 속성 데이터를 트리 형태로 구조화한 JSON 객체 - 리스트([]) 안에 딕셔너리({key : value})로 구성
- plotly.graph_objects 모듈
- Plotly에서 제공하는 모든 기능을 사용하는 정규 방법
- Plotly 객체를 만들기 위해서는 Figure() 함수를 사용하여 Plotly 객체를 초기화하여 생성
- 초기화된 객체에 data, layout 속성을 할당
- plotly.graph_objects.add_trace()
- plotly.graph_objects.update_layout()
- plotly.express 모듈
- plotly.graph_objects에서 제공하는 많은 속성 중에 자주 사용되는 속성을 매개변수화하여 쉬운 인터페이스로 설계한 함수들로 구성한 모듈
- Plotly는 data 속성과 layout 속성이 루트 노드인 속성들의 트리 구조로 구현, plotly.express는 트리 형태로 구성하지 않기 때문에 사용하기 쉽다는 장점이 있음
- 단점
- mesh나 isourface와 같은 3차원 시각화는 아직 plotly.express에서 지원하지 않음
- 여러 개의 트레이스를 가지는 서브플롯이나 다중 축의 사용, 패싯(facet)과 같은 시각화는 plotly.express로 생성하는 데에는 한계가 있음
- Plotly 라이브러리 모듈 로딩 및 객체 초기화
import plotly.graph_objects as go import plotly.express as px import plotly.offline as pyo pyo.init_notebook_mode() # 맥북에서 무반응 해결 fig = go.Figure() fig.show()
- data 속성
- data 속성: 시각화를 통해 표현해야 할 데이터와 그 표현 방식을 설정하는 속성(데이터를 표현하는 *트레이스를 구성하는 세부 속성들을 뜻함)
- 트레이스: Plotly로 시각화할 수 있는 그래픽적 데이터 표현 방법(e.g., scatter, pie, bar, etc.)
- 트레이스를 추가하기 위해서는 add_trace()를 사용, 이를 사용하기 위해서는 반드시 type 속성으로 트레이스 종류를 설정