데이터 시각화/EDA : 데이터 탐색 노트북

[EDA] 효율적인 데이터 탐색 & 시각화 도구 : 파이썬 '판다스 비주얼 어날리시스(pandas visual analysis)' 라이브러리 활용하기

Clary K 2020. 10. 15. 23:40
728x90

데이터 분석을 하는 사람이라면 데이터 분석 초반에 상당 수의 시간을 EDA(Exploratory Data Analysis) 작업에 많이 쏟게 된다.

이 과정은 왜 필요한 것일까?

EDA 작업을 통해서 전반적인 변수들의 분포 및 변수간의 관계는 물론 특이하거나 이상한 패턴을 시각화를 통해서 발견할 수도 있고, 정확한 분석 결과를 도출하기 위해 도움이 될 만한 새로운 변수&피쳐 생성 관련한 아이디어도 얻을 수 있기 때문이다.

 

참고) EDA가 무엇인가는 하단의 포스팅에서 살펴볼 수 있다 :)

 

[데이터분석] 탐색적 데이터 분석 'EDA(Exploratory Data Analysis)'의 중요성

데이터 분석의 여러 과정 중, 가볍다면 가볍게 볼 수 있고, 쉽게 지나칠 수 있는 과정인 'EDA의 중...

blog.naver.com

 

[데이터분석] 비전문가를 위한 '탐색적 데이터 분석(EDA)' 과정의 이해

이번 글은 얼마 전에 '티핑인사이트'라는 데이터 분석회사로부터 'EDA 과정'에 대...

blog.naver.com

 

 

오늘 다루고자 하는 주제는 EDA 자체에 관한 것은 아니다.

데이터 탐색 작업 과정을 좀 더 효율적이고 작업 시간을 단축시켜 수 있는 라이브러리 활용법을 올려보려고 한다.(특히 EDA용 시각화!!)

그 이름하야 판다스 비주얼 어날리시스 'ㅡ'/

 

 

1) 라이브러리 로드하기

import pandas as pd
import seaborn as sns
from pandas_visual_analysis import VisualAnalysis

 

>> pandas_visual_analysis 라이브러리를 사용하기 위해서는 하단의 명령어를 아나콘다 프롬프트에 미리 설치해주어야 한다.

pip install pandas_visual_analysis

 

 

2) 데이터 로드하기

df = sns.load_dataset('mpg')

df.head(10)

mpd 데이터셋

>> 유명한 'mpg' 데이터셋은 수치형, 범주형, 문자형 등 여러 형태의 변수들로 구성되어 있다.

 

이외에도 seaborn 라이브러리에서 로드 가능한 데이터셋을 확인하려면 하단의 함수를 사용하면 된다.

print(sns.get_dataset_names())

>> ['anagrams', 'anscombe', 'attention', 'brain_networks', 'car_crashes', 'diamonds', 'dots', 'exercise', 'flights', 'fmri', 'gammas', 'geyser', 'iris', 'mpg', 'penguins', 'planets', 'tips', 'titanic']

 

 

3) 판다스 비주얼 어날리시스 사용하기

VisualAnalysis(df)

>> 라이브러리만 로드해주면 사용법은 엄청 간단하다. 단지 VisualAnalysis(df)  <- 이 함수 하나로 위와 같은 비주얼 어플리케이션이 출력된다.

지금 전체적인 구성이 판다스의 좌측 상단부터 describe, scatter plot, histogram, scatter plot 위젯 순으로 구성되어 있는데 이 라이브러리의 강점은 바로 관찰하고 싶은 변수를 마음대로 변경할 수 있다는 점이다.

드롭다운을 클릭하면 mpg 데이터셋의 모든 변수들이 나타난다...

  • brush summary 기능 : Metric을 모든 분위수 기준으로 변경 가능
  • histogram 기능 : normalize 가능
  • scatter plot 기능 : x, y에 원하는 변수 선택 가능, size 매트릭에 원하는 변수 추가 가능

 

 

4) 위젯 종류와 구성 변경하기

방금 출력한 인터페이스는 디폴트 위젯으로 구성한 상태였고, 판다스 비주얼 어날리시스 라이브러리에서 제공하는 모든 위젯들은 다음 함수로 확인할 수 있다.

VisualAnalysis.widgets()

>> ['Scatter', 'ParallelCoordinates', 'BrushSummary', 'Histogram', 'ParallelCategories', 'BoxPlot']

스캐터 플롯, Parallel coordinates(평행 좌표 시각화), 브러시 써머리(= 판다스 describe 출력 데이터와 유사), 히스토그램, Parallel categories(평행 좌표 범주형 시각화), 박스플롯 이렇게 6가지의 그래프를 사용할 수 있다. 

 

그렇다면 나는!! 스캐터 플롯 + 박스플롯 + 히스토그램 구성으로 커스터마이징 해보겠다.

VisualAnalysis(df,
    layout=[["Scatter", "Scatter"],
            ["BoxPlot", 'Histogram']],
               row_height=[200, 200]   # 인터페이스 전체 넓이 및 높이 지정
)

>> 인터페이스 전체 넓이와 높이까지 원하는 사이즈로 변경해주니 전체 위젯들의 시각화가 한 눈에 들어와서 더 파악하기 쉬웠다.

 

개별 위젯 상에서 원하는 영역만 드래그하면 모든 위젯들이 그 데이터 포인트들에 맞추어 포커싱 해준다.(가능한 위젯들에만 적용된다)

상단에 Selection Type 이라는 탭 영역이 있는데 이것은 방금 말한 데이터 영역 선택하는 유형을 선택하는 것이다.

  • Standard : 영역을 선택할 때마다 새롭게 영역이 잡힘
  • Additive : 기존 선택 영역에서 데이터 포인트를 추가할 때 사용
  • Subtractive : 기존 선택 영역에서 데이터 포인트를 제거할 때 사용

 

다른 위젯으로 바꿔보자.

VisualAnalysis(df,
    layout=[["ParallelCoordinates"],
            ["ParallelCategories"]],
               row_height=[200, 300]
)

>> 이번에는 평행 좌표 시각화로 구성해보았다. 기본 세팅되어있는 2 x 2 구성이 아니더라도 1 x 1 구성, 1 x 2 구성도 할 수 있다.

 

 

5) 세부적인 옵션 적용하기

공식 문서를 참조하여 변경할 수 있는 파라미터를 조절하여 내가 원하는대로 적용해보았다.

VisualAnalysis(df, row_height=200, sample=0.5, seed=17, categorical_columns=['origin', 'name'],
              select_color='#880E4F', deselect_color='#8A8C93', alpha=0.75)

 

  • select_color, deselect_color : 데이터 영역 지정 시 선택된 컬러는 select_color로, 그 외의 영역은 deselect_color로 지정 가능
  • sample, seed : 데이터 샘플링 비중 및 seed 지정 가능, 데이터셋이 클 경우 샘플링하여 시각화하면 좀 더 빠르게 할 수 있음 
  • categorical_columns : 범주형 변수를 따로 지정해줌, 복수인 경우 리스트 형태로 입력, 위젯에서 지정된 범주형 변수들을 알맞게 시각화해 줌
  • alpha : 스케터 플롯처럼 밀도가 높은 데이터 영역에 투명도를 적용하면 더욱 상세하게 관찰 가능

등의 파라미터 변경이 가능하다.

 

 

실험 후 결론

단점 : 

  • EDA 작업에서 우리는 굉장히 다양한 시각화를 시도하게 되는데 이 판다스 비주얼 어날리시스 라이브러리가 많은 유형과 범위를 커버하고 있진 않다.
  • 시각화를 많이 해본 사람이 작업 시간을 단축시키려고 할 때 의미가 있지 아무것도 모르는 초보자가 처음부터 쉽게 사용하려는 목적으로 사용하진 않는 것이 좋다.

장점 :

  • 사용 빈도가 높은 시각화 몇 가지에 한해서는 빠르고 쉽게 변수간의 관계를 파악할 수 있고 시각화를 출력할 수 있다.
  • 스캐터 플롯 위젯 기준 Lasso select 툴로 데이터 영역을 잡아주면, 박스플롯이나 히스토그램에서 그 부분을 같이 잡아주어 다양한 관점에서 해당 데이터의 위치 및 분포를 관찰할 수 있다. 
  • 출력된 시각화 위에 마우스 포인터를 갖다대면 데이터 상세 값들을 확인할 수 있다.(plotly와 연동되기 때문임)

 

 

판다스 비주얼 어날리시스 공식 사이트 주소 :

pandas-visual-analysis.readthedocs.io/en/latest/

 
 
 
Clary K
 
728x90