9 minute read

Visualization

  • 학습 목표 1. 목적에 따라 시각화를 선택하고 사용할 수 있다.
  • 학습 목표 2. 시각화 결과를 효과적으로 수용할 수 있다.

데이터 시각화란?

  • 데이터 시각화란 데이터를 그래픽 요소로 매핑하여 시각적으로 표현하는 것
  • 100점짜리 시각화는 없지만 연구되고 사용된 시각화 모범 사례를 통해 좋은 시각화를 만들 수 있다.

시각화는 다양한 요소가 포함된 Task

  • 목적 : 왜 시각화 하는지
  • 독자 : 시각화 결과의 대상이 누구인지
  • 데이터 : 어떤 데이터를 시각화 할 것인지
  • 스토리 : 어떤 흐름으로 인사이트를 전달할 것인지
  • 방법 : 전달하고자 하는 내용에 맞게 효과적인 방법을 사용하고 있는지
  • 디자인 : UI에서 만족스러운 디자인을 가지고 있는지

데이터 이해하기

  • 데이터 시각화를 위해서는 데이터가 우선적으로 필요하다.
  • 데이터셋 관점, 개별 데이터의 관점으로 구별한다.

데이터셋의 종류

  • 정형 데이터 (엑셀등으로 정리되어 있는 전형적인 데이터, 통계쪽에서 많이사용됨)
  • 시계열 데이터 (시간 흐름에다른 추세, 계절성, 주기성등을 살핀다.)
  • 지리/지도 데이터 (거리, 경로, 분포등 다양한 실사용)
  • 관계 데이터 (객체와 객체 간에 시각화, 휴리스틱하게 많이 분석)
  • 계층적 데이터 (관계 중에서도 포함관계가 분명한 데이터, ex)Tree, Treemap)

데이터 분류

  • 수치형(numerical)
    • 연속형(continuous) : 길이, 무게, 온도 등
    • 이산형(discrete) : 주사위 눈금, 사람 수 등
  • 범주형(categorical)
    • 명목형(nominal) : 혈액형, 종교 등
    • 순서형(ordinal) : 학년, 별점, 등급 등

마크와 채널

  • 마크 - 점, 선, 면으로 이루어진 데이터 시각화
  • 채널 - 각 마크를 변경 할 수 있는 요소들

전주의적 속성(Pre-attentive Attribute)

  • 주의를 주지 않아도 인지하게 되는 요소
    • 시각적으로 다양한 전주의적 속성이 존재
  • 동시에 사용하면 인지하기 어려움
    • 적절하게 사용할 때, 시각적 분리(visual pop-out -> 가독성이 좋다.)

Bar plot

Bar plot 이란?

  • Bar plot이란 직사각형 막대를 사용하여 데이터의 값을 표현하는 차트/그래프
  • 범(category)에 따른 수치 값을 비교하기에 적합한 방법
    • 개별 비교, 그룹 비교 모두 적합
  • 막대의 방향에 다른 분류 (.bar() / .barh())
    • 수직 : x축의 범주, y축의 값을 표기.(default)
    • 수평 : y축에 범주, x축에 값을 표기.(범주가 많을 때)

다양한 Bar plot

Multiple Bar plot

  • Bar plot에서는 범주의 대해 각 값을 표현 -> 즉 1개의 feature에 대해서만 보여줌
  • 여러 Group을 보여주기 위해서는 여러가지 방법이 필요
  1. 플롯을 여러 개 그리는 방법
  2. 한 개의 플롯에 동시에 나타내는 방법
  3. 쌓아서 표현하는 방법 (Stack Bar Plot, 응용하여 Percentage Stacked Bar Chart를 주로사용) plot
  4. 겹쳐서 표현하는 방법 (Overlapped Bar Plot)
  5. 이웃에 배치하여 표현하는 방법 (Grouped Bar Plot 가장 추천!!) - 그룹별 범주에 따른 bar를 이웃되게 배치. - matplotlib 으로는 비교적 구현이 까다로움 - 그룹이 적을때 효과적(5~7개 이하)

Principle of Proportion Ink

The representation of numbers, as physically measured on the surface of the graphic itself, should be directly proportional to the numerical quantities represented.

  • 실제값과 그에 표현되는 그래픽으로 표현되는 잉크 양은 비례해야 한다
  • 반드시 x축의 시작은 zero(0)!!
    • 차이를 나타내고 싶다면 plot의 세로 비율을 늘리기
  • 막대 그래프에만 한정된 것은 아니다.

데이터 정렬하기

  • 정확한 정보를 전달하기 위해서는 정렬이 필수.
    • pandas에서는 sort_values, sort_index()를 사용하여 정렬
  • 데이터 종류에 따라 다음 기준으로
    1. 시계열 - 시간순
    2. 수치형 - 크기순
    3. 순서형 - 범주의 순서대로
    4. 명목형 - 범주의 값 따라 정렬
  • 여러 가지 기준으로 정렬을 하여 패턴을 발견함
  • 대시보드에서는 Interactive로 제공하는 것이 좋다.

적절한 공간 활용

  • 여백과 공간만 조정해도 가독성이 높아짐.
  • Matplotlib의 bar plot은 ax에 꽉 차서 살짝 답답함.
  • Matplotlib techniques
    • X/Y axis Limit (set_xlim(), set_ylime())
    • Spines(spines[spine].set_visible())
    • Gap(width)
    • Legend(legend())
    • Margins(margins())

복잡함과 단순함

  • 필요없는 복잡함을 없애자
    • 무의미한 3D는 사용하지말자
    • 최대한 직사각형을 사용하는것을 지향
  • 무엇을 보고싶은가(시각화를 보는 대상이 누구인지)
  • 축과 디테일의 복잡함을 최대한 단순하게.

ETC

  • 오차 막대를 추가하여 uncertainty 정보를 추가
  • bar 사이 gap이 0이라면 ->히스토그램
    • .hist()를 사용
    • 연속된 느낌을 준다.
  • 다양한 텍스트 정보 활용

Line plot

기본 Line Plot

Line Plot 이란?

  • Line Plot은 연속적으로 변화하는 값을 순서대로 점으로 나타내고, 이를 선으로 연결한 그래프
  • 꺽은선 그래프, 선 그래프, line chart, line graph등의 이름으로 사용된다.
  • 시간/순서에 대한 변화에 유리하며 시계열 분석에 특화되어 있다.
  • 놀라운점은 .line이 아니라 .plot() 이다.

Line plot의 요소

  • 5개 이하의 선을 사용하는 것을 추천(가독성을 위해)
  • 요소들
    1. 색상(color)
    2. 마커(maker, markersize)마커의종류
    3. 선의 종류(linestyle, linewidth)

Line plot 전처리

  • 실시간 데이터는 noise로 패턴 및 추세 파악이 어려울 수 도 있음.
  • Noise의 인지적인 방해를 줄이기 위해 smoothing을 사용

정확한 Line plot

추세에 집중

  • Bar plot과 다르게 꼭 축을 0에 초점을 둘 필요는 없다.(잉크 비례의 법칙에서 벗어남)
  • 구체적인 line plot 보다는 생략된 line plot이 나을 수 있다.
    • grid, annotate 등 제거해 트렌드에 집중

간격

  • 규칙적인 간격이 아니라면 오해를 줄 수 있다.
  • 규칙적인 간격의 데이터가 아니라면 각 관측값에 점으로 표시하여 오해를 줄여야 함.

보간

  • line은 점을 이어 만드는 요소 -> 점과 점 사이에 데이터가 없기에 이를 잇는 방법(보간)
  • 데이터의 error나 noise가 포함되어 있는 경우, 데이터의 이해를 돕는 방법
  • Presentation에는 좋은 방법이지만
    • 없는데이터를 있다고 생각 할 수 있음.
    • 일반적인 분석에서는 지양할 것!
  • 정보

이중 축 사용

  • 좌측, 우측에 두개의 축을 사용한다.
  • 같은 시간축에 다른 종류 데이터를 표현할 떼 -> twinx()를 사용한다.
  • 한 데이터에 대한 다른 단위 표현할 때 -> secondary_xaxis(), secondary_yaxis() 사용한다. secondary_axis
  • 함부러 사용하는 것은 지양한다. (두개를 따로 사용하는 것이 가독성이 높다)

ETC

  • 라인 끝 단에 레이블을 추가한다. (범례 보다 식별에 도움됨)
  • 연한 색을 사용해 uncertainty 표현 가능(신뢰구간, 분산 등)

Scatter plot

기본 Scatter Plot

Scatter plot이란

  • 점을 사용하여 두 feature간의 관계를 알기 위해 사용하는 그래프
  • 산점도 등으로 불리고, scatter()를 사용

Scatter plot의 요소

  • 요소
    1. 모양
    2. 크기
  • 요소등을 활용하여 2차원 데이터에서 N차원 데이터로 확장 가능(ex 빨간색은 3차원으로, 네모는 4차원으로)

Scatter plot의 목적

  • 상관 관계 확인(양의 상관관계, 음의 상관관계, 없음)
  • 군집, 값 사이의 차이, 이상치 탐지등

정확한 Scatter plot

Overplotting

  • 점이 많아질수록 점의 분포를 파악하기 힘들다!
  • 해결방안 네가지
    • 투명도 조정
    • 지터링(jittering) : 점의 위치를 약간씩 변경
    • 2차워 히스토그램 : 히트맵을 사용해 깔끔하게 시각화
    • Contour plot : 분포를 등고선을 사용하여 표현

점의 요소와 인지

  • 색 - 연속은 gradient, 이산은 개별 색상으로
  • 마커 - 거의 구별하기 힘들다 + 크기가 고르지 않음
  • 크기
    • 흔히 버블 차트라고 부름
    • 구별하기 쉽지만 오용하기 쉬움
    • 관계보다는 각 점간 비율에 초점을 둔다면 좋음
    • SWOT 분석 등에 활용 가

인과관계와 상관관계

  • 인과 관계(causal relation)과 상관 관계(correlation)은 다름!
    • 1주차에서 강의에서 배웠던것 기억

추세선 (curve fitting)

  • 추세선을 사용하여 scatter의 패턴을 유추할 수 있음

ETC

  • Grid는 지양, 최소화, 색은 무채색으로

Comments