Post

Chapter 10. 데이터 탐색과 시각화

  • 진도: 183p~
  • 이해되지 않는 부분 표시 , 중요한 부분 표시
  • 박스 플롯의 구조에서 최솟값 범위와 실제 최솟값을 왜 나눠놓는 건가? -> 데이터 중 터무니없다고 생각되는 값을 최대, 최소값에서 제거하므로 최솟값 범위 내에서 의미있다고 취급되는 최솟값이 존재하는 것 -> 좀 더 알아보기

질문들

  1. Github Pages 만들 때 Configuration에서 architect로 테마 변경이 안됨
  • plt.colorbar()

데이터 탐색과 시각화

  • EDA 단계에서 데이터 파악을 좀 더 효율적으로 하기 위해 시각화를 하기도 하지만, 데이터 시각화의 궁극적 목적은 분석 결과를 커뮤니케이션 하기 위함이다.
    1. 시간 시각화
    2. 비교 시각화
    3. 분포 시각화
    4. 관계 시각화
    5. 공간 시각화

탐색적 데이터 분석(EDA)

  • 가공하지 않은 원천의 데이터를 있는 그대로 탐색하고 분석하는 기법
  • EDA를 할 때는 극단적인 해석은 피해야 하며 지나친 추론이나 자의적 해석도 지양해야 한다.

엑셀을 활용한 EDA

  • 각 데이터 샘플을 1000개씩 뽑아서 엑셀에 붙여 놓고 변수와 설명 리스트와 함께 눈으로 쭉 살펴보는 것이다.

탐색적 데이터 분석 실습

  • info(): 데이터를 구성하는 행과 열의 크기와 각 칼럼을 구성하는 값의 자료형 등을 확인할 수 있다.
  • 결측값 확인 후 처리 (결측값: 알려지지 않고, 수집되지 않거나 잘못 입력된 데이터 세트의 값)
  • describe(): 평균, 표준편차, 최대 최솟값 등을 한 번에 확인할 수 있다.
  • 왜도: 분포의 비대칭도를 나타내는 통계량으로, 카이제곱분포와 같이 오른쪽으로 긴 꼬리를 가진 경우 양수이고 왼쪽으로 긴 꼬리를 가지면 음수이다.
  • 첨도: 분포가 정규분포보다 얼마나 뾰족하거나 완만한지의 정도를 나타내는 척도이고, 뾰족할수록 첨도값이 크다.

공분산과 상관성 분석

  • 변수간의 관계 파악: 타깃변수 Y와 입력변수 X와의 관계는 물론 입력변수 X들 간의 관계도 살펴봐야 한다.
  1. 공분산
    • 서로 공유하는 분산으로 두 변수의 상관성을 보여준다.
    • 양(1), 음(-1), 0의 상관관계
    • 공분산 값이 지니는 크기가 상관성의 정도를 나타내지 못하는 한계
  2. 피어슨 상관계수: 등간, 비율척도의 데이터에서 사용
    • 공분산의 한계를 해결하기 위함
    • 두 변수의 공분산을 두 변수가 변하는 전체 정도(두 변수의 표준편차의 곱)로 나눠준 것이다.
    • [-1, 1] 범위
    • 절댓값이 커질수록 상관성이 높다.
    • 산점도의 기울기와 상관계수는 관련이 없다.
    • 상관계수가 높다는 것은 X1이 움직일 때 X2가 많이 움직인다는 뜻이 아니라, X2를 예상할 수 있는 정확도, 즉 설명력이 높다는 것이다.
  3. 결정계수
    • 상관계수를 제곱한 값
    • 총 변동 중에서 회귀선에 의해 설명되는 변동이 차지하는 비율
    • 해당 독립변수가 종속변수의 변동을 설명하는 정도

공분산과 상관성 분석 실습

  • fig: Figure 객체는 도표 전체를 나타내며, 모든 플롯 요소들을 포함합니다. 여러 개의 서브플롯(subplot)을 포함할 수 있는 최상위 컨테이너입니다.

  • ax: Axes 객체는 실제 그래프(플롯)가 그려지는 영역을 나타냅니다. 플롯의 각각의 축(axis)을 포함하며, 데이터가 그려지는 곳입니다.

시간 시각화

  • 시점 요소가 있는 데이터는 시계열 형태로 표현 가능
  • 선그래프 형태인 연속형과 막대그래프 형태인 분절형
  1. 연속형 시간 시각화
    • 시간 간격의 밀도가 높을 때 사용
    • 데이터의 양이 너무 많거나 변동이 심해 트렌드나 패턴을 확인하는 것이 어려운 경우, 추세선을 삽입하여 들쭉날쭉한 데이터 흐름을 안정된 선으로 표현 가능
    • 추세선을 그리는 가장 일반적인 방법은 이동평균 방법을 사용하는 것으로, 데이터의 연속적 그룹의 평균을 구하는 것
  2. 분절형 시간 시각화
    • 막대그래프, 누적 막대그래프, 점 그래프 등으로 표현
    • 값들의 상대적 차이를 나타내는 것에 유리
    • 누적 막대그래프는 한 시점에 2개 이상의 세부 항목이 존재할 때 사용(이전 시점의 데이터에서 누적해서 보여주는 게 아니라 한 시점의 여러 항목들의 데이터를 누적해서 보여줌)

시간 시각화 실습

비교 시각화

  • 히트맵 차트는 그룹과 비교 요소가 많을 때 효과적으로 시각화를 할 수 있는 방법이다.
  • 히트맵 시각화를 통해 두 변수들 간의 상관계수를 효과적으로 볼 수 있게 도와줄 수 있다.
  • 히트맵 차트의 표현 방법: 하나의 변수(그룹) X N개의 각 변수에 해당하는 값들(수치형)
    1. 방사형 차트
  1. 평행 좌표 그래프
    • 평행 좌표 그래프를 보다 효과적으로 표현하려면 변수별 값을 정규화하면 된다. 가장 낮은 값은 0%로, 가장 높은 값은 100%로 변환하여 차이를 더욱 부각시키는 것이다.

비교 시각화 실습

DataFrame.pivot(*, columns, index=_NoDefault.no_default, values=_NoDefault.no_default)

  • Return reshaped DataFrame organized by given index / column values.

분포 시각화

  • 변수들이 어떤 요소로 어느 정도의 비율로 구성되어 있는지를 확인하는 단계는 꼭 필요하다.
  • 분포시각화는 연속형과 같은 양적 척도인지, 명목형과 같은 질적 척도인지에 따라 구분해서 그린다.
  • 양적 척도의 경우 막대그래프선그래프로 분포를 나타낼 수도 있고, 히스토그램을 통해 분포를 단순화하여 보다 알아보기 쉽게 만들 수도 있다.
    1. 양적 척도
  • 히스토그램의 각 구간은 bin이라 하고, 구간의 높이는 밀도, 즉 가로축의 단위 구간에 속한 값의 비율(도수)을 나타낸다.
    1. 질적 척도
  • 질적 척도로 이루어진 변수는 구성이 단순한 경우 파이 차트도넛 차트를 사용한다.
  • 구성 요소가 복잡한 질적 척도를 표현할 때는 트리맵 차트를 이용하면 보다 효과적으로 표현할 수 있다.
  • 트리맵 차트의 장점은 사각형 안에 더 작은 사각형을 포함시켜서 위계구조를 표현할 수 있다는 것이다.
  • 와플 차트는 와플처럼 일정한 네모난 조각들로 분포를 표현한다. 하지만 트리맵 차트처럼 위계구조를 표현하지는 못한다.

분포 시각화 실습

  • 도넛 차트: 파이 차트에 차트 형태 옵션(wedgeprops)을 추가하여 조정한다.

  • 트리맵 차트: Plotly Express 모듈 사용
  • 와플 차트: matplotlib의 figure 클래스 사용

관계 시각화

산점도

  • 하나의 요소는 X축, 다른 한 요소는 Y축에 대입하여 일치하는 지점에 점을 찍어 주기만 하면 된다.
  • 산점도를 그릴 때는 극단치를 제거하고서 그리는 것이 좋다. 극단치로 인해 주요 분포 구간이 압축되어 시각화의 효율이 떨어지기 때문이다. 버블 차트
  • 버블 차트를 이용하면 세 가지 요소의 상관관계를 표현할 수 있다.
  • 버블의 크기를 통해 한 가지 요소를 추가적으로 볼 수 있다.
  • 버블 차트를 해석할 때는 원의 지름이 아닌 면적을 통해 크기를 판단하도록 주의해야 한다. 지름이 두 배가 크면 실제 크기는 네 배가 큰 것이기 때문이다.

관계 시각화 실습

회귀 분석

  • 변수들 간의 관계를 파악함으로써 어떤 특정한 변수의 값을 다른 변수들로 설명하고 예측하는 통계적 기법
  • 예측하고자 하는 변수의 값을 Dependent Variable 종속변수라고 칭하고, 종속변수들을 설명하는 변수들을 Independent Variable 독립변수라고 부르고, 종속변수와 독립변수의 관계를 도출하는 것

공간 시각화

  • 공간시각화는 위치 정보인 위도와 경도 데이터를 지도에 매핑하여 시각적으로 표현한다.
  • 정보를 보다 효과적으로 전달할 수 있도록 거시적에서 미시적으로 진행되는 분석 방향과 같이 스토리라인을 잡고 시각화를 적용하는 것이 좋다.

도트맵

  • 지리적 위치에 동일한 크기의 작은 점을 찍어서 해당 지역의 데이터 분포나 패턴을 표현하는 기법이다. 버블맵
  • 버블차트를 지도에 그대로 옮겨 둔 것이다. 코로플레스맵
  • 단계 구분도라고도 하는데, 데이터 값의 크기에 따라 색상의 음영을 달리하여 해당 지역에 대한 값을 시각화하는 기법이다. 커넥션맵 혹은 링크맵
  • 지도에 찍힌 점들을 곡선 또는 직선으로 연결하여 지리적 관계를 표현한다.
  • 일반적으로 연결선의 분포와 집중도를 통해 지리적 관계의 패턴을 파악하기 위해 사용한다.

공간 시각화 실습

class folium.features.Choropleth

  • Apply a GeoJSON overlay to the map.

DataFrame에서 특정 행 선택하는 방법

  1. 행 번호로 특정 행을 선택하는 방법: .iloc
  2. label이나 조건 표현으로 선택하는 방법: .loc

class plotly.graph_objects.Figure(data=None, layout=None, frames=None, skip_invalid=False, **kwargs)

  • Create and add a new annotation to the figure’s layout

박스 플롯

  • 네모 상자 모양에 최댓값과 최솟값을 나타내는 선이 결합된 모양의 데이터 시각화 방법이다.
  • 하나의 그림으로 양적 척도 데이터의 분포 및 편향성, 평균과 중앙값 등 다양한 수치를 보기 쉽게 정리해준다.
  • IQR: 3사분위 수에서 1사분위 수를 뺀 사분위수 범위(박스의 높이)
  • 최댓값과 최솟값의 범위를 넘어가는 값은 이상치로서 작은 원으로 표시한다.

박스 플롯 실습


This post is licensed under CC BY 4.0 by the author.