Chapter 10. 데이터 탐색과 시각화
- 진도: 183p~
- 이해되지 않는 부분 표시 , 중요한 부분 표시
- 박스 플롯의 구조에서 최솟값 범위와 실제 최솟값을 왜 나눠놓는 건가? -> 데이터 중 터무니없다고 생각되는 값을 최대, 최소값에서 제거하므로 최솟값 범위 내에서 의미있다고 취급되는 최솟값이 존재하는 것 -> 좀 더 알아보기
질문들
- Github Pages 만들 때 Configuration에서 architect로 테마 변경이 안됨
- plt.colorbar()
데이터 탐색과 시각화
- EDA 단계에서 데이터 파악을 좀 더 효율적으로 하기 위해 시각화를 하기도 하지만, 데이터 시각화의 궁극적 목적은 분석 결과를 커뮤니케이션 하기 위함이다.
- 시간 시각화
- 비교 시각화
- 분포 시각화
- 관계 시각화
- 공간 시각화
탐색적 데이터 분석(EDA)
- 가공하지 않은 원천의 데이터를 있는 그대로 탐색하고 분석하는 기법
- EDA를 할 때는 극단적인 해석은 피해야 하며 지나친 추론이나 자의적 해석도 지양해야 한다.
엑셀을 활용한 EDA
- 각 데이터 샘플을 1000개씩 뽑아서 엑셀에 붙여 놓고 변수와 설명 리스트와 함께 눈으로 쭉 살펴보는 것이다.
탐색적 데이터 분석 실습
- info(): 데이터를 구성하는 행과 열의 크기와 각 칼럼을 구성하는 값의 자료형 등을 확인할 수 있다.
- 결측값 확인 후 처리 (결측값: 알려지지 않고, 수집되지 않거나 잘못 입력된 데이터 세트의 값)
- describe(): 평균, 표준편차, 최대 최솟값 등을 한 번에 확인할 수 있다.
- 왜도: 분포의 비대칭도를 나타내는 통계량으로, 카이제곱분포와 같이 오른쪽으로 긴 꼬리를 가진 경우 양수이고 왼쪽으로 긴 꼬리를 가지면 음수이다.
- 첨도: 분포가 정규분포보다 얼마나 뾰족하거나 완만한지의 정도를 나타내는 척도이고, 뾰족할수록 첨도값이 크다.
공분산과 상관성 분석
- 변수간의 관계 파악: 타깃변수 Y와 입력변수 X와의 관계는 물론 입력변수 X들 간의 관계도 살펴봐야 한다.
- 공분산
- 서로 공유하는 분산으로 두 변수의 상관성을 보여준다.
- 양(1), 음(-1), 0의 상관관계
- 공분산 값이 지니는 크기가 상관성의 정도를 나타내지 못하는 한계
- 피어슨 상관계수: 등간, 비율척도의 데이터에서 사용
- 공분산의 한계를 해결하기 위함
- 두 변수의 공분산을 두 변수가 변하는 전체 정도(두 변수의 표준편차의 곱)로 나눠준 것이다.
- [-1, 1] 범위
- 절댓값이 커질수록 상관성이 높다.
- 산점도의 기울기와 상관계수는 관련이 없다.
- 상관계수가 높다는 것은 X1이 움직일 때 X2가 많이 움직인다는 뜻이 아니라, X2를 예상할 수 있는 정확도, 즉 설명력이 높다는 것이다.
- 결정계수
- 상관계수를 제곱한 값
- 총 변동 중에서 회귀선에 의해 설명되는 변동이 차지하는 비율
- 해당 독립변수가 종속변수의 변동을 설명하는 정도
공분산과 상관성 분석 실습
fig: Figure 객체는 도표 전체를 나타내며, 모든 플롯 요소들을 포함합니다. 여러 개의 서브플롯(subplot)을 포함할 수 있는 최상위 컨테이너입니다.
ax: Axes 객체는 실제 그래프(플롯)가 그려지는 영역을 나타냅니다. 플롯의 각각의 축(axis)을 포함하며, 데이터가 그려지는 곳입니다.
시간 시각화
- 시점 요소가 있는 데이터는 시계열 형태로 표현 가능
- 선그래프 형태인 연속형과 막대그래프 형태인 분절형
- 연속형 시간 시각화
- 시간 간격의 밀도가 높을 때 사용
- 데이터의 양이 너무 많거나 변동이 심해 트렌드나 패턴을 확인하는 것이 어려운 경우, 추세선을 삽입하여 들쭉날쭉한 데이터 흐름을 안정된 선으로 표현 가능
- 추세선을 그리는 가장 일반적인 방법은 이동평균 방법을 사용하는 것으로, 데이터의 연속적 그룹의 평균을 구하는 것
- 분절형 시간 시각화
- 막대그래프, 누적 막대그래프, 점 그래프 등으로 표현
- 값들의 상대적 차이를 나타내는 것에 유리
- 누적 막대그래프는 한 시점에 2개 이상의 세부 항목이 존재할 때 사용(이전 시점의 데이터에서 누적해서 보여주는 게 아니라 한 시점의 여러 항목들의 데이터를 누적해서 보여줌)
시간 시각화 실습
비교 시각화
- 히트맵 차트는 그룹과 비교 요소가 많을 때 효과적으로 시각화를 할 수 있는 방법이다.
- 히트맵 시각화를 통해 두 변수들 간의 상관계수를 효과적으로 볼 수 있게 도와줄 수 있다.
- 히트맵 차트의 표현 방법: 하나의 변수(그룹) X N개의 각 변수에 해당하는 값들(수치형)
- 방사형 차트
- 평행 좌표 그래프
- 평행 좌표 그래프를 보다 효과적으로 표현하려면 변수별 값을 정규화하면 된다. 가장 낮은 값은 0%로, 가장 높은 값은 100%로 변환하여 차이를 더욱 부각시키는 것이다.
비교 시각화 실습
DataFrame.pivot(*, columns, index=_NoDefault.no_default, values=_NoDefault.no_default)
- Return reshaped DataFrame organized by given index / column values.
분포 시각화
- 변수들이 어떤 요소로 어느 정도의 비율로 구성되어 있는지를 확인하는 단계는 꼭 필요하다.
- 분포시각화는 연속형과 같은 양적 척도인지, 명목형과 같은 질적 척도인지에 따라 구분해서 그린다.
- 양적 척도의 경우 막대그래프나 선그래프로 분포를 나타낼 수도 있고, 히스토그램을 통해 분포를 단순화하여 보다 알아보기 쉽게 만들 수도 있다.
- 양적 척도
- 히스토그램의 각 구간은 bin이라 하고, 구간의 높이는 밀도, 즉 가로축의 단위 구간에 속한 값의 비율(도수)을 나타낸다.
- 질적 척도
- 질적 척도로 이루어진 변수는 구성이 단순한 경우 파이 차트나 도넛 차트를 사용한다.
- 구성 요소가 복잡한 질적 척도를 표현할 때는 트리맵 차트를 이용하면 보다 효과적으로 표현할 수 있다.
- 트리맵 차트의 장점은 사각형 안에 더 작은 사각형을 포함시켜서 위계구조를 표현할 수 있다는 것이다.
- 와플 차트는 와플처럼 일정한 네모난 조각들로 분포를 표현한다. 하지만 트리맵 차트처럼 위계구조를 표현하지는 못한다.
분포 시각화 실습
도넛 차트: 파이 차트에 차트 형태 옵션(wedgeprops)을 추가하여 조정한다.
- 트리맵 차트: Plotly Express 모듈 사용
- 와플 차트: matplotlib의 figure 클래스 사용
관계 시각화
산점도
- 하나의 요소는 X축, 다른 한 요소는 Y축에 대입하여 일치하는 지점에 점을 찍어 주기만 하면 된다.
- 산점도를 그릴 때는 극단치를 제거하고서 그리는 것이 좋다. 극단치로 인해 주요 분포 구간이 압축되어 시각화의 효율이 떨어지기 때문이다. 버블 차트
- 버블 차트를 이용하면 세 가지 요소의 상관관계를 표현할 수 있다.
- 버블의 크기를 통해 한 가지 요소를 추가적으로 볼 수 있다.
- 버블 차트를 해석할 때는 원의 지름이 아닌 면적을 통해 크기를 판단하도록 주의해야 한다. 지름이 두 배가 크면 실제 크기는 네 배가 큰 것이기 때문이다.
관계 시각화 실습
회귀 분석
- 변수들 간의 관계를 파악함으로써 어떤 특정한 변수의 값을 다른 변수들로 설명하고 예측하는 통계적 기법
- 예측하고자 하는 변수의 값을 Dependent Variable 종속변수라고 칭하고, 종속변수들을 설명하는 변수들을 Independent Variable 독립변수라고 부르고, 종속변수와 독립변수의 관계를 도출하는 것
공간 시각화
- 공간시각화는 위치 정보인 위도와 경도 데이터를 지도에 매핑하여 시각적으로 표현한다.
- 정보를 보다 효과적으로 전달할 수 있도록 거시적에서 미시적으로 진행되는 분석 방향과 같이 스토리라인을 잡고 시각화를 적용하는 것이 좋다.
도트맵
- 지리적 위치에 동일한 크기의 작은 점을 찍어서 해당 지역의 데이터 분포나 패턴을 표현하는 기법이다. 버블맵
- 버블차트를 지도에 그대로 옮겨 둔 것이다. 코로플레스맵
- 단계 구분도라고도 하는데, 데이터 값의 크기에 따라 색상의 음영을 달리하여 해당 지역에 대한 값을 시각화하는 기법이다. 커넥션맵 혹은 링크맵
- 지도에 찍힌 점들을 곡선 또는 직선으로 연결하여 지리적 관계를 표현한다.
- 일반적으로 연결선의 분포와 집중도를 통해 지리적 관계의 패턴을 파악하기 위해 사용한다.
공간 시각화 실습
class folium.features.Choropleth
- Apply a GeoJSON overlay to the map.
DataFrame에서 특정 행 선택하는 방법
- 행 번호로 특정 행을 선택하는 방법: .iloc
- 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.