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
기본 사용법
- analyze(), compare(), compare_intra() 중 하나를 사용하여 DataframeReport 객체 생성
- 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
'데이터' 카테고리의 다른 글
Firebase와 BigQuery로 DAU, 체류시간, PV, Time on Page 집계 (4) | 2023.12.07 |
---|---|
Looker Studio에서 지도에 위치 데이터 시각화 (0) | 2023.12.06 |