[Python libs] pandas-profiling for pandas DataFrame

1 minute read

pandas Dataframe 형태의 데이터에 대해서 변수별 통계 특성 계산, histogram 그리기, 결측값 확인, 상관성 분석까지 기본적으로 수행하는 데이터 분석에 대한 리포트를 편리하게 만들 수 있는 라이브러리입니다. table 형태의 정형 데이터를 분석할 때 처음에 사용해보면 좋을 것 같습니다.
예시는 유명한 데이터셋인 Titanic 데이터셋을 사용했습니다.

설치

pip 명령어로 쉽게 설치할 수 있습니다. progressbar 라이브러리를 같이 설치해주어야 진행 상황을 보여주는 progressbar를 볼 수 있는 것 같습니다.

!pip install pandas-profiling
!pip install progressbar

적용 예

pandas_profiling 라이브러리를 설치하고 ProfileReport 함수만 사용하면 아래와 같은 html 형식의 리포트를 만들 수 있습니다. 주피터 노트북 상에서 결과를 볼 수 있고, 파일로 따로 저장할 수도 있습니다.

import pandas as pd
import pandas_profiling as pp
import matplotlib
df = pd.read_csv('titianic.csv')
report = pp.ProfileReport(df, title = 'EDA')

jupyter notebook상에서 결과를 확인하는 방법은 두 가지입니다.

  • .to_widgets()
  • .to_notebook_iframe()

첫 번째 방법은 노트북 상에서 편리하게 볼 수 있도록 위젯 형태로 보여주는 방법이고, 두 번째 방법은 html로 반환했을 때 보여주는 그대로를 결과 창에 띄워줍니다. 두 번째 방법을 볼 때는 뒤에 .to_notebook_iframe()을 생략하고 실행해도 같은 결과가 나오게 됩니다.

참고로 21년 2월 26일 기준으로 jupyter lab에서는 to_widgets() 기능은 사용할 수 없었습니다. 아래는 jupyter notebook에서 시행한 결과입니다.

report.to_widgets()
# 업로드시 위젯이 보이지 않아서 이미지로 대체합니다.

img

report.to_notebook_iframe() # or just "report"
Render HTML:   0%|          | 0/1 [00:00<?, ?it/s]

파일로 저장

파일로 저장할 때는 저장하고자 하는 확장자를 붙여 저장할 수 있습니다. html, pdf, json이 가능하다고 하는데 제가 구현해봤을 때 pdf로는 저장되지 않는 문제가 있었습니다.

report.to_file('EDA result.html')
Export report to file:   0%|          | 0/1 [00:00<?, ?it/s]

마무리

pandas dataframe으로 주어진 데이터에 대해서 편리하게 EDA를 수행할 수 있도록 도와주는 pandas-profiling의 기본적인 사용법을 정리했습니다. 리포트를 좀 더 커스텀하기 위해선 github를 참고하면 될 것 같습니다.