저는 bokeh를 자주 사용하는 편입니다. 사실 아직까지도 익숙하지는 않지만, 워낙 다양한 기능을 제공하고 있어서 조금만 다룰 줄 알아도 꽤나 멋진 시각화 자료를 만들 수 있습니다. 앞으로 가능한, Bokeh의 여러 기능을 활용하는 방법에 대해 포스팅을 하려고 합니다.
가장 유용한 기능 중에 하나는 지도를 활용하여 interactvie한 앱을 시각적으로 묘사할 수 있다는 점입니다. 이런 시각화는 그것이 목적이 될 수도 있지만, 단순한 숫자와 그래프보다 훨씬 더 직관적인 이해를 가져다줄 수 있습니다. 이번 포스팅에서는 king county 데이터를 바탕으로 이를 확인해보도록 하겠습니다. 이야기를 시작하기 전에, 인터렉티브한 앱을 쉽게 공유하는 방법부터 소개드립니다.
nbviewer
bokeh와 같은 인터렉티브한 어플을 만들고나면 사실 골치아픈 것이 이를 공유하기가 쉽지 않습니다. ipynb파일을 매번 전송해줄 수도 없을 뿐더러, 내가 쓰던 ipynb파일을 보내다가 자칫 api-key를 같이 보내버리면 꽤나 당혹스럽기까지합니다. 그렇다고 github 페이지에 올리면, 가장 핵심적인 인터렉티브한 결과물이 나타나지 않습니다.
지난 포스팅에서는 이를 위한 해결방법으로 본인의 깃헙 홈페이지에서 html을 마크다운 안에 집어넣어서 작동할 수 있음을 보여드린 바있습니다. 포스팅을 주 목적으로 할 때 이 방법은 꽤나 만족스럽기는 합니다. 다만 html 양이 기하급수적으로 늘어나는 더욱 정교한 인터렉티브 앱을 마크다운 안에 집어넣기는 매우 힘든 일입니다. 그 때에는 nbviewer가 큰 도움이 됩니다.
사용방법은 간단합니다. 해당 사이트로 이동해서, 자신의 깃헙에 올려둔 ipynb 파일의 url 링크를 복붙을 하면 됩니다. 그렇게되면 해당 ipynb가 아주 정상적으로 잘 작동함을 확인할 수 있습니다. 이제 다른 사람들에게 매우 쉽게 자신의 결과물을 공유할 수 있게 됩니다. 예를 들어, 간단한 링크를 통해서 매우 깔끔하고 익숙한 UI에서 결과물을 확인할 수 있습니다.
데이터
기본적인 데이터는 아래와 같이 생겼습니다. 자세한 내용은 이곳에서 확인하실 수 있습니다.
숫자와 그래프보다 직관적인 EDA
직접 데이터를 다운받고 핸들링하다보면, 집값의 분포가 어떤 식으로 되어있는지 이해하기 힘듭니다. 특히 도메인 지식이 부족한 자료일수록 이러한 경향이 더욱 짙습니다.
집값을 기준으로 3개의 계층으로 나누어 지도에 표시한, 비교적 간단한 bokeh 활용예시입니다. 이를 통해서 데이터를 힘들게 보지 않아도 한가지 확실한 도메인 지식을 얻을 수 있습니다. 상류층과 하류층의 구분을 통해서 명확히 드러나는 집의 분포입니다. 집값이 상위 1/3에 해당하는 집들은 대게 해안과 호수가를 둘러싸고 있음을 쉽게 확인할 수 있습니다. 이는 해당 집의 위치와 관련이 없어보일 정도로 명확한 차이를 드러냅니다. 이렇듯, 훌륭한 시각화는 매우 직관적이로 손쉽게 상대방을 설명할 수 있다고 생각합니다.