※ 이 포스팅은 저자 'Kirthi Raman'의 도서 <Mastering Python Data Visualization> 을 공부하며 정리한 글입니다. 



Chapter 03. Getting Started with the Python IDE (파이썬 IDE로 시작하기)


이 책에 따르면, 이미 파이썬 2.7 버전대에서 작성된 여러 라이브러리들이 3.x 버전대와 호환이 잘 되지 않는다고 하니 2.7 버전대를 사용하기로 합니다.


또한, 이 책으로 공부를 하시는 분들이라면 아나콘다(Anaconda)를 설치하시는 것이 편리할 것입니다.

나중에 설치 과정을 정리해보겠습니다.



파이썬의 강점


방대하고, 유용한 라이브러리들을 쉽게 설치하여 적용할 수 있다는 것이 파이썬의 가장 큰 강점이다.

GUI를 만들 수 있고, DB와 연결할 수 있으며, 랜덤 수를 생성하여 시뮬레이션을 시행할 수 있고, 수학적 연산에서의 높은 정밀도를 가진다.

2D, 3D 그래픽 시각화, 머신 러닝과 통계적 알고리즘 등을 수행할 수 있는 고성능의 패키지들도 배포되고 있다.



아나콘다 (Anaconda)


Continuum Analytics가 개발한 아나콘다는 데이터 분석과 시각화를 위해 가장 많이 사용되는 IDE 중 하나로 잘 알려져 있다.

* IDE란, 통합개발환경(Integrated Development Environment)으로서 편리하게 어플리케이션을 개발할 수 있도록 여러 기능들을 모아둔 것입니다.


아나콘다는 개발자가 필요한 파이썬 라이브러리를 쉽게 설치하고 업데이트 할 수 있도록 돕는다.
빅 데이터의 관리, 분석 그리고 비즈니스 인텔리전스를 위한 시각화, 과학적 분석, 엔지니어링, 머신 러닝 등 강력한 파이썬 패키지들의 집합이다.

아나콘다는 IPython과 Spyder 등의 IDE를 포함한다.
* 개인적으로 저처럼 기존에 R을 사용하셨던 통계 전공자분들에게 Spyder를 추천합니다. RStudio와 환경이 비슷한 것 같아 큰 이질감이 없습니다.


추천하는 파이썬 시각화 패키지들


#. matplotlib

- 가장 많이 사용되는 파이썬 시각화 라이브러리

- NumPy, SciPy와 연결되어 있음

- 과학 분야 파이썬 커뮤니티에서 주로 사용되고 있다


#. Plotly

- 시각화와 분석을 함께 할 수 있도록 브라우저에서 작동하는 플랫폼

- 반응적으로 그래프 작업을 할 수 있고, 스타일을 입힐 수 있다.

- matplotlib 기반으로 작성된 시각화 코드를 Plotly 버전으로 쉽게 고칠 수 있다


#. Veusz

- 파이썬과 PyQt로 만어졌으며 GPL-scientific 시각화 라이브러리


#. Mayavi

- 3차원 시각화 패키지


#. NetworkX

- 복잡한 네트워크를 생성하며 가공하고 그 구조와 역학, 기능 연구에 사용


#. pygooglechart

- 구글 시각화 API와 연동할 수 있게 돕는 라이브러리



반응형(interactive) 시각화 패키지들


#. Bokeh

- 아웃 포커스된 이미지의 일부분 혹은 블러링을 묘사하는 일본어에서 유래

- 예시 : http://nbviewer.jupyter.org/gist/fonnesbeck/ad091b81bffda28fd657


#. VisPy

- OpenGL 활용, 고성능 반응형 시각화 라이브러리

- 예시 : http://vispy.org/gallery.html



※ 이 포스팅은 저자 'Kirthi Raman'의 도서 <Mastering Python Data Visualization> 을 공부하며 정리한 글입니다. 



Chapter 02. Data Analysis and Visualization (데이터 분석과 시각화)


Storytelling 방식의 데이터 시각화


#. 데이터를 이용해 즐거운 이야기를 만들자

- 올바른 방법으로 표현된 데이터는 이해하고 기억하기 쉽기 때문이다

- 좋은 시각화를 만들기 위해 첫 번째로 해야 할 가장 중요한 일은 '최종 목표'를 명확히 설정하는 것이다.


#. 시각화는 독자의 입장에서

- 단지 저자(데이터를 시각화하는 주체)의 입장에서 데이터를 시각화하면, 그 의의가 저자에 의해 결정되어 단순 정보 전달에 그칠 수 있다.

- 그러나 독자 중심으로 생각하면, 독자와 저자는 상호 교류하며 서로가 데이터를 유연하게 고르고, 분석하고, 시각화된 데이터를 이해할 수 있게 된다.


#. 매력적인 스토리텔러가 되어야

- Storyteller들은 대화에 있어 독자에 대한 이해가 중요하다는 것을 명확히 알고 있다.

- 데이터의 스토리라인 또한 청중에 따라서 표현과 전달 방식이 달라야 한다.


#. 올바른 시각화 방법을 선정하자

- 비교와 순위

** 특히, 비교는 분석 타겟의 특성을 더 강조할 수 있을 뿐 아니라, 그것을 주장할 수 있는 근거를 만들어주기 때문에 중요하다고 생각합니다.

- 상호 연관성

: 산점도(산포도), 상관관계, 히트맵

- 분포

: 히스토그램, 박스플랏(상자 그래프), 상자 수염 그래프(Box and Whisker plot)

* 분포는 특히 이상점을 찾는데 유용하게 사용될 수 있습니다.

- 지역적 특성이나 정보

: 지도 위에 도형의 크기와 색을 활용

- 부분에서 전체의 관계

: 파이 차트(원 그래프), 그룹 막대 그래프, 누적 열 차트

- 시간 경과에 따른 경향

: 막대 그래프, 시계열 그래프, 추세선



반응형(interactive) 시각화


#. 반응형 시각화의 장단점

- 많은 양의 정보를 하나의 플랫폼을 통해 전달 가능하다

- 그러나 모든 시각화 가능성에 대해 확인해봐야 하므로 사용자에게 많은 시간을 요구하게 된다.


#. 이벤트 리스너

- 사용자의 요구(query, needs)는 프로그래밍적으로 이벤트 리스너를 통해 실시간으로 처리(catch)해야 한다.

- 반응형 시각화에서는, 주로 마우스의 움직임이나 클릭 등을 인식하는데 사용한다.


#. 몇 가지 원칙

- 사용자의 행동이 시스템에 반영됐다는 것을 명확히 인식시켜줘야 함 (ex: 강조 표시, 밑줄, 색 변화, 굵게, 기울임 등)

- 피드백은 평균 1초 내에 구현되도록 해야 답답함을 느끼지 않을 것이다.

- 만약 알고리즘 특성 때문에 결과를 표시하기까지 시간이 필요할 경우, loading과 같은 처리 중 표시를 해야 이탈을 방지할 수 있다.



데이터 시각화는 예술이자 과학이며, 수학적인 문제를 푸는 일


#. 데이터 시각화의 목적을 수시로 상기하자

- 시각화는 사용자, 독자, 청자에게 시각적인 방법으로 정보를 명확하고 효과적으로 전달하고 소통하는 것

- 효과적인 시각화 결과물은 데이터와 증거들에 대해 분석하고 추론할 수 있게 돕는다.

- 또한 복잡한 데이터를 쉽게 접근 가능토록 하고, 이해시키며, 사용할 수 있게 돕는다.

- 비교와 특이점을 이해하는 것과 같은 특정한 분석이 중요할 수 있고, 이를 그림으로 표현할 수 있다면 더욱 좋다.


#. 효과적인 방법을 사용하자

- 수학적 문제를 푸는 것 처럼, 분석 목표를 달성하는 데에는 유일한 한 가지 방법만이 있는 것은 아니다.

- 표는 데이터의 날 것을 보여주지만, 다양한 형태의 도표와 차트는 변수들 간의 관계와 패턴 등을 잘 표현할 수 있다.




※ 이 포스팅은 저자 'Kirthi Raman'의 도서 <Mastering Python Data Visualization> 을 공부하며 정리한 글입니다.



Chapter 01. A Conceptual Framework for Data Visualization (데이터 시각화의 개념)


데이터를 분석하는 이유는 흔히 말하는 '인사이트'를 얻기 위함이라 볼 수 있겠습니다.


그러나, 인사이트는 쉽게 발견하기가 어렵습니다.

특히 주어진 데이터를 멋져보이고 아름다운(?) 모형을 사용한다고 해서 바로 얻어지는 것이 아닙니다.


저는 분석을 하기 전에, 반드시 데이터에 대한 이해가 필요하다고 생각합니다. (분석 목표에 대한 명확한 정의가 내려졌을 때)

데이터가 어떤지 살펴봐야 이상치나 특이점, 결측의 여부를 식별하고, 적절한 전처리 방법을 선택하여 무결성을 확보할 수 있습니다.

또한, 다른 다른 관측값(row)이나 변수(column)간의 일관된 비교나 분석 가능성을 확보하기 위한 스케일링, 표준화 등이 필요할 수 있습니다.

모형이 특정한 분포를 가정(정규분포 등)한다면, 적절한 변수변환이 필요할 수 있습니다.

분석 목적에 따라 수치형 데이터를 범주화 하는 등의 작업이 필요할 수도 있습니다.


등등등..

이러한 관점에서, '데이터 시각화'는 꼭 필요한 과정이 될 것입니다.

이 밖에도 꼭 모형을 사용하지 않더라도, 시각화를 통해서 변수간의 상관관계나 특이점 등을 찾아 통찰을 발견할 수 있을 것입니다.



이 책 Chapter 1에서 '데이터', '정보', '지식', '통찰'의 개념을 나눠서, 그것도 첫 장에 서술한 이유도 같은 맥락이지 않을까 싶습니다.

책에 따르면 이렇습니다.



#. 데이터

- 디지털의 형태를 가진 단순한 객관적 사실들의 나열

- 따라서 그 자체로 의미를 가지지 못하고, 의사결정에 그대로 사용될 수 없다


#. 정보

- 문제를 해결하기 위한 목적으로 가공/처리된 데이터

- 데이터 간 관계나 연관성을 문맥이나 배경을 바탕으로 부여한 것

- 단순한 질문에 대한 답을 데이터로부터 얻은 결과물


#. 지식

- 인간이 정보를 종합하여 이들을 이해하고 조직화 할 때 드러나며, 의사결정에 사용

- 데이터, 정보 뿐 아니라 경험을 통해 축적된 기술 등을 의미


#. 데이터 분석과 통찰

- 혁신적인 결과를 가져다 주는 '유레카'의 순간

- 비즈니스 가치를 이끌며, 의사결정을 개선하고, 고객을 더 잘 이해하게 되는 일

- 해결책을 발견하고 해결하기 위해 무엇이 필요한지에 대해 깨닫게 도움



그렇다면, 좋은 시각화란 무엇인가?

저자는 이렇게 말합니다.


" 좋은 시각화는 박물관의 전시품 같이 단지 보기 좋은 통계적 그림이 아니며, 우리로 하여금 파고 들게 하고 데이터의 변화를 좀 더 발견하게 한다 "

" 좋은 시각화는 데이터를 탐색하는 것을 돕고, 가치와 깊은 통찰을 제공하고, 효율적이고 시각적으로 매력적이며, 확장/축소 가능하며, 이해하기 쉽다 "



결국 데이터에서 인사이트를 얻기 위해, 시각화 작업은 꼭 필요한 프로세스입니다.

효과적인 시각화를 위해서는 분석에 대한 명확한 목표를 설정하고, 그 과정에서 데이터 전처리가 수행됩니다.

또한 결과를 보는 사람, 즉 청중에 대한 배려가 필요합니다. 시각화의 주제에 대한 배경지식과 시각화 도구에 대한 이해수준 등이 고려되어야 할 것입니다.




다음 장에서는 조금 더 구체적으로 데이터 시각화에 어떠한 좋은 방법들이 있는지 공부하게 될 것 같습니다. :)





저자 Kirthi Raman의 <Mastering Python Data Visualization> 이라는 책을 공부하면서 조금씩 정리해보려고 합니다.

책 정보 : https://www.packtpub.com/big-data-and-business-intelligence/mastering-python-data-visualization


사실 ISL을 먼저 공부하려고 했으나.. 파이썬을 공부할 필요가 생겼네요.


잘못된 부분의 지적이나 질문 등 언제나 환영합니다. 함께 공부해요. :)


-----


번역서도 출판되어 있습니다.

<파이썬 데이터 시각화 마스터> : http://acornpub.co.kr/book/mastering-python-visualization





An Introduction to Statistical Learning (ISL)을 공부하면서 조금씩 정리해보려고 합니다.

책은 http://www-bcf.usc.edu/~gareth/ISL/ 에서 받아보실 수 있습니다.


사실 학부 수업 때 배운 교재라, 순서를 무시하고 개인적으로 필요한 부분을 먼저 올릴 계획입니다.


잘못된 부분의 지적이나 질문 등 언제나 환영합니다. 함께 공부해요. :)




작성 중 : ISL Chapter 6 - Linear Model Selection and Regularization (선형 모형 선택과 축소)

+ Recent posts