데이터

Sweetviz (Quick EDA)

깨비아빠0 2023. 9. 21. 07:13
728x90
반응형

https://github.com/fbdesignpro/sweetviz

 

GitHub - fbdesignpro/sweetviz: Visualize and compare datasets, target values and associations, with one line of code.

Visualize and compare datasets, target values and associations, with one line of code. - GitHub - fbdesignpro/sweetviz: Visualize and compare datasets, target values and associations, with one line...

github.com

https://coderzcolumn.com/tutorials/data-science/sweetviz-automate-exploratory-data-analysis-eda

 

Sweetviz: Automate Exploratory Data Analysis (EDA) by Sunny Solanki

Sweetviz: Automate Exploratory Data Analysis (EDA)

coderzcolumn.com

 

EDA(Exploratory Data Analysis)를 편하게 할 수 있도록 도와주는 툴을 찾아보다가 sweetviz를 사용해보았다. 마침 2023년 8월에 업데이트가 있었다고 한다.

 

Sweetviz는 간단한(두 줄) 코드로 기본적인 EDA를 빠르게 수행할 수 있는 파이썬 라이브러리이다.

 

Sweetviz에서는 다음과 같은 기능을 제공한다.

  • 타겟 분석: 타겟 피쳐를 지정하면 각각의 입력 피쳐와 타겟과의 관계를 표시한다. (모든 피쳐 히스토그램에 타겟 분포도가 표시)
  • 데이터셋 비교 및 시각화: 두 데이터셋(예: 훈련셋 vs. 테스트셋) 또는 데이터셋 내 피쳐끼리(예: male vs. female) 비교 분석
  • 피쳐 상관관계 분석: 수치형 피쳐 간, 범주형 피쳐 간, 범주형-수치형 피쳐 간의 상관계수를 보여준다.
    • 수치형 피쳐 간: Pearson 상관계수
    • 범주형 피쳐 간: 불확실성 계수(uncertainty coefficient, 엔트로피 계수)
    • 범주형-수치형 피쳐 간: correlation ratio
  • 피쳐 타입 자동 감지: 수치형, 범주형, 텍스트 타입을 자동으로 감지
    (예: 실제 변수의 데이터 타입이 실수여도 관측값이 2개 뿐이라면 범주형 피쳐로 간주)
  • 피쳐 요약 정보 표시: 타입, unique 값, 결측값, 중복 데이터, 빈도 높은 값들
    • 수치형 변수 추가 정보: 최소/최대/범위, 사분위수, 평균, 최빈값, 표준편차, 총합
      중앙값, 중앙값 절대 편차, 변동계수(coefficient of variation), 첨도(kurtosis), 왜도(skewness)

 

설치

pip install sweetviz

 

기본 사용법

  1. analyze(), compare(), compare_intra() 중 하나를 사용하여 DataframeReport 객체 생성
  2. show_html() 또는 show_notebook()으로 리포트 확인 (또는 저장)
import sweetviz as sv

my_report = sv.analyze(my_dataframe)
my_report.show_html() # Default arguments will generate to "SWEETVIZ_REPORT.html"

위 코드를 실행하면 브라우저에서 아래와 같이 1080p widescreen html 앱이 표시된다.

 

analyze()

analyze(source: Union[pd.DataFrame, Tuple[pd.DataFrame, str]],
        target_feat: str = None,
        feat_cfg: FeatureConfig = None,
        pairwise_analysis: str = 'auto',
):
  • source: pandas DataFrame 또는 (DataFrame, str) 튜플. 튜플 문자열은 리포트에 사용됨.
  • target_feat: 타겟 피쳐 지정. 타겟 이름을 설정하면 각 피쳐 그래프에서 타겟 통계를 볼 수 있음. 불린 및 수치형 피쳐만 가능.
  • feat_cfg: FeatureConfig 객체. 스킵할 피쳐 등의 옵션을 설정할 수 있다.
  • pairwise_analysis: 아래 이미지 오른쪽과 같이 피쳐 상관관계를 보여준다. (상단의 ASSOCIATIONS 클릭)
    디폴트값인 'auto'를 사용하면, config 파일 association_auto_threshold 설정에 따라 피쳐가 200개 이하인 경우 상관관계를 분석한다. (config 수정은 https://github.com/fbdesignpro/sweetviz#customizing-defaults-the-config-file 참고)
    명시적으로 켜거나 끄려면 'on' 또는 'off'를 인자값으로 넘겨야 한다.

 

compare()

두 데이터셋, 예를 들어 훈련 데이터셋과 테스트 데이터셋을 비교 분석한다.

analyze() 인자 목록에 source 인자가 하나 더 추가되며, 나머지 인자들은 동일하다.

my_report = sv.compare([my_dataframe, "Training Data"], [test_df, "Test Data"], "Survived", feature_config)

 

compare_intra()

하나의 데이터셋을 둘로 나눠서 비교 분석한다.

analyze() 인자 목록에 분할 조건, 서브셋 이름 튜플 인자가 추가된다.

my_report = sv.compare_intra(my_dataframe, my_dataframe["Sex"] == "male", ["Male", "Female"], "Survived", feature_config)

 

show_html()

리포트를 html 파일로 저장하고, 브라우저에 띄운다.

show_html(filepath='SWEETVIZ_REPORT.html', 
          open_browser=True, 
          layout='widescreen', 
          scale=None)
  • open_browser: 브라우저 오픈 여부.
  • layout: 리포트 레이아웃. 'widescreen' 또는 'vertical'.
  • scale: 리포트 전체 스케일. (예: scale=0.8)

 

show_notebook()

리포트를 jupyter/colab 같은 노트북 아웃풋에 추가한다. (IFRAME 사용)

show_notebook(w=None, 
              h=None, 
              scale=None,
              layout='widescreen',
              filepath=None)
  • w: 아웃풋 창의 width. 퍼센트(w="100%") 또는 픽셀 수(w=900)로 설정 가능.
  • h: 아웃풋 창의 height. 픽셀 수(w=700) 또는 "Full" 설정 가능. "Full" 설정 시 모든 피쳐의 (요약) 정보가 다 나온다.
  • scale: show_html()과 동일
  • layout: show_html()과 동일
  • filepath: 추가로 저장할 html 파일 경로

 

 

사용 예제

breast cancer 데이터 분석 (analyze)

우선 데이터프레임을 준비한다.

import pandas as pd
from sklearn.datasets import load_breast_cancer

dataset = load_breast_cancer(as_frame=True)
df = dataset.frame
df

 

리포트 생성 후 html 파일을 저장한다.

import sweetviz as sv

report = sv.analyze(df)
report.show_html("SWEETVIZ_REPORT_breast_cancer.html", layout='vertical')

아웃풋에 진행상황이 표시되고, html 파일을 저장한다.

로컬 환경에서 실행했다면, 저장한 html이 브라우저에서 즉시 열린다.

 

결과

https://freeislet.github.io/kebidad/sweetviz/SWEETVIZ_REPORT_breast_cancer.html

https://freeislet.github.io/kebidad/sweetviz/SWEETVIZ_REPORT_breast_cancer_VERTICAL.html

 

 

 

반응형