Skip to content

Posts 데이터 시각화 #
Find similar titles

Structured data

Category
Statistics

정의 #

Data visualization의 번역어이며, 위키피디아에서는 아래와 같이 정의하고 있다(^1).

데이터 시각화(data visualization)는 데이터 분석 결과를 쉽게 이해할 수 있도록 시각적으로 표현하고 전달되는 과정을 말한다. 데이터 시각화의 목적은 도표와 그래프라는 수단을 통해 정보를 명확하고 효과적으로 전달하는 것이다.

2014년 8월 현재 여러 책이나 전문가들의 블로그를 보면 데이터 시각화에 대한 정의에 대한 다양한 의견이 존재한다. 위의 정의에 추가로 참고할 만한 대표적인 의견으로는 다음과 같다.

  • 기술 통계학의 한 분야이다(^2).
  • 광의로는 기술분야를 뜻하고, 협의로는 개별 산출물을 지칭한다(^3).

번역 #

한국어 위키피디아에서 "데이터 시각화"라고 번역되어 있어 이를 따르지만, 다양한 기사에서 다음과 같은 번역어들도 있음

  • 시각화를 가시화로 번역하는 경우: 빅데이터가 주목 받기 전에 일본자료가 출처인 것으로 여겨지는 글에서 주로 발견된다.
  • 데이터를 자료로 직역하거나 정보로 의역하는 경우
    • (강병철의 개인생각) information의 번역어로 '정보'는 광범하게 사용되는데, data의 번역어로 '자료'는 상대적으로 공감대가 낮은 것 같음
    • (JEM의 개인생각) 데이터는 연구나 조사, 발견, 수집의 결과인 일종의 기초 자료로서, 정보를 만들기 위한 원자재와 같은 것

인포그래픽스와 뭐가 다른가? #

요즘(2014년 8월) 데이터 시각화와 함께 인포그래픽스(Infographics)도 각광을 받고 있다. 인포그래픽스 디자이너인 잭 해글리의 글이 공통점과 차이점에 대해서 잘 설명하고 있다(^4). 이를 요약하면 다음과 같다.

  • 공통점: 백문이 불여일견
    • 관심을 유발하고, 유용한 정보를 제공하고자 함
    • 데이터를 시각적으로 표현 (보통 수치자료를 도표로 표현)
    • 정적, 상호작용화, 동영상으로 제작됨
    • 다양한 전문가의 협업이 필요한 경우가 많음
  • 차이점
    • 인포그래픽스: 청중이 한정되고 주제가 있는 이야기를 도표로 표현 (subjective)
    • 데이터 시각화: 자료의 편집없이 모든 수치정보를 도표로 표현하고자 함 (objective)

인포그래픽스는 어떤 설득의 의도를 가진 선전(propaganda)의 도구 측면이 강한 반면, 데이터 시각화는 대규모 자료의 함의(latent semantics)를 찾기 위한 도구이다.

관련 소프트웨어와 라이브러리 #

관련 블로그 #

실전 예제 #

붓꽃(iris) 데이터 시각화 #

데이터를 분석할 때 가장 기본적으로 할 수 있는 작업은 각 속성에 대한 평균, 분산, 최대값, 최소값을 구하는 일이다. 이 작업과 더불어 데이터를 이렇게 저렇게 변경해야 할 일이 종종 생긴다. 이러한 분석을 편하게 해 주는 라이브러리가 pandas(http://pandas.pydata.org/)이다. pandas는 R의 DataFrame과 유사하여 R을 사용해 본 경험이 있는 사용자는 쉽게 사용할 수 있으며 경험이 없다하더도 약간의 함수나 메소드를 익히면 쉽게 사용할 수 있다. pandas는 데이터를 쉽게 조작하게 할 수 있을 뿐만 아니라 간단하게 데이터를 시각화 할 수 있다는 다른 장점이 있다.

https://pypi.python.org/pypi/pandas/0.14.0/#downloads에서 윈도우용 설치자를 내려 받을 수 있다.

우선 사용할 붓꽃 데이터를 로드하고 pandas의 DataFrame에 데이터를 넣은 다음, 붓꽃 데이터의 기본 정보를 얻도록 하자.

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.datasets import load_iris

iris = load_iris()
X, y = iris.data, iris.target

iris_df = pd.DataFrame(X, columns=list(iris.feature_names))
print(iris_df.describe())
iris_df.boxplot()
iris_df.plot()
plt.scatter(iris_df['sepal length (cm)'], iris_df['sepal width (cm)'], c=y)
plt.show()

다음과 같이 4개의 속성에 대한 평균(mean]), [[표준편차(std), 최소(min), 최대(max) 값을 얻는다. 첫 번째 속성인 꽃받침 길이(sepal length)는 총 150개이며 평균은 5.84, 표준편차는 0.82이다.

    sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)  
count         150.000000        150.000000         150.000000   150.000000
mean            5.843333          3.054000           3.758667   1.198667   
std             0.828066          0.433594           1.764420   0.763161   
min             4.300000          2.000000           1.000000   0.100000   
25%             5.100000          2.800000           1.600000   0.300000   
50%             5.800000          3.000000           4.350000   1.300000   
75%             6.400000          3.300000           5.100000   1.800000     
max             7.900000          4.400000           6.900000   2.500000

다음으로, iris_df.boxplot()를 사용해서 이 데이터를 시각화 해 보자.

boxplot

위의 도표는 상자 수염(boxplot whisker)로 상자 아래의 선은 최소값, 상자의 밑변은 25%에 해당하는 값, 상자의 중앙선은 중앙값(50%), 상자의 윗변은 75%에 해당하는 값, 마지막으로 상자 위의 선은 최대값이 된다. 따라서, 꽃받침 너비(sepal width)의 경우, 데이터가 아주 밀집되어 있고, 꽃잎 길이(petal length)는 데이터가 넓게 퍼져 있음을 알 수 있다.

iris_df.plot()사용한 다음 도표로 각 속성의 값 변화를 볼 수 있다.

plot

이 도표에서 재미있는 점은 표의 x축인 데이터의 번호에 따른 속성의 변화이다. 꽃잎 길이(petal length)와 꽃잎 너비(petal width)는 데이터 번호가 따라 어느정도 구별이 가능하다. 즉, 0에서 50까지 한 그룹, 51에서 100까지 한 그룹, 101에서 150까지 한 그룹으로 분포되어 있어 이를 이용해서 구별이 가능하다.

이러한 시각화와 통계로 데이터를 어느 정도 파악할 수 있었다. 그림 2로 꽃잎 길이와 꽃잎 너비가 목적 속성인 꽃의 분류와 어느 정도 선형적인 관계가 있음을 알게 되었다. 이러한 관계를 상관 관계 분석(http://ko.wikipedia.org/wiki/상관분석)을 통해 알 수 있다. 상관 관계 분석이란 두 변수간에 선형적 관계를 분석하는 방법으로 상관 관계의 정도를 상관 계수로 나타낸다. 즉, 꽃잎 길이와 목적 속성인 꽃의 분류가 선형적인 관계를 보이기 때문에 상관 계수는 최대값인 1에 가깝지만 꽃받침 너비(sepal width)는 꽃의 분류와 선형적인 관계가 비교적 적기 때문에 0에 가깝다. 그러면 각 속성과 목적 속성간의 상관 계수를 구해 보도록 하자.

y1 = np.vstack(y)
iris_df = pd.DataFrame(np.hstack((X, y1)), columns=iris.feature_names+['target'])
iris_df.corr()

꽃의 분류인 목적 속성과 iris의 속성을 합하여 새로운 DataFrame을 만들고 iris_df.corr()를 호출한다.

correlation

위의 표에서 보듯, 꽃잎 길이와 꽃잎 너비는 목적 속성가 선형적인 관계가 있다. 시각화와 더불어 통계적으로 꽃잎 길이와 꽃잎 너비를 고려하여 꽃의 종류를 판단한다면 더 나은 결과를 얻을 수 있다.

Incoming Links #

Related People #

Related Data Sciences #

Related Articles #

Related Etcs #

Related Bioinformaticses #

Suggested Pages #

Other Posts #

0.0.1_20140628_0