[Python] Powerful library for EDA - Pandas Profiling
2022. 5. 16. 00:15ㆍPython
데이터를 처음 접하게 되면 변수의 구성과 분포, 결측치, 상관관계 등 기본적으로 파악해야할 요소들이 많다.
이것은 EDA(Exploratory Data Analysis)의 첫 단계로 이 과정을 빠르게 도와주는 파이썬 라이브러리가 몇 가지 있다.
- Pandas Profiling
- Sweetviz
- DataPrep
여기서는 Pandas Profiling에 대해 정리해보려고 한다.
1. 설치
!pip install pandas-profiling
2. 활용
2.1. 데이터 불러오기
예제 데이터로 kaggle의 호주 강수 예측 데이터([1])를 사용하였다.
import pandas as pd
df = pd.read_csv('weatherAUS.csv')
2.2. 분석 보고서 생성하기
profile = df.profile_report()
# 결과 확인하는 방법
# 1) 화면에 보고서 형태로 출력
profile
# 2) html 파일로 보고서를 저장
profile.to_file('weatherAUS_profile.html')
# 3) 화면에 wiget 형태로 출력
profile.to_widgets()
보고서 생성은 한줄의 코드로 가능하다.
결과 확인은 Jupyter notebook 화면에 출력하거나, html 파일로 저장하여 확인할 수 있다.
3. EDA 기능
생성된 결과는 Overview, Variables, Interactions, Correlations, Missing values, Sample 로 구분된다.
3.1. Overview


- [Overview] 탭에서는 데이터의 통계와 변수 타입 개수를 한눈에 확인할 수 있다.
변수(variable)와 샘플(observation) 갯수, 결측값 개수 및 비율, 중복 샘플 개수 및 비율 - [Warnings] 탭에서는 Cardinality, Correlation, Missing, Zeros에 대한 현황을 파악할 수 있다.
distinct value 비율이 높은 경우, 변수간 상관관계가 높은 경우, 결측값이 있는 경우, 0 값이 있는 경우를 보여주는데, 이것은 EDA에서 주요하게 확인하는 요소들로 유용한 기능인 것 같다.
3.2. Variables


- Variables 에서는 기본적인 통계값(distinct 개수/비율, Missing 개수/비율)과 함께 각 변수의 분포를 그래프로 보여준다.
- 수치형 변수의 경우 평균/최대/최소값, 0 값의 개수/비율 등을 추가적으로 보여준다.
- Toggle details 버튼을 클릭하면 보다 상세한 특징들을 확인할 수 있다.
3.3. Interactions

- Interactions 에서는 수치형 변수에 대한 상관 관계를 그래프로 확인할 수 있다.
x축과 y축에 놓고 싶은 두 변수를 차례로 선택하면 오른쪽과 같은 그래프를 보여준다.
3.4. Correlations

- Correlations 에서는 변수간의 상관계수를 히트맵 형태로 확인할 수 있다.
- 상관계수의 종류에는 Pearson's r, Spearman's rho, Kendall's tau, Phik, Cramer's V 가 있다.
3.5. Missing values




- Missing values 에서는 결측값의 개수 및 분포, 결측값의 변수간 상관관계를 제공한다.
- [Count] 각 변수의 결측값 비율 및 개수 확인
- [Matrix] 결측값의 위치를 데이터 테이블 형태로 표시하여 결측값의 분포를 시각적으로 한눈에 확인
- [Heatmap] 결측값 간의 상관관계를 히트맵으로 확인
- [Dendrogram] 결측값 간의 상관관계를 덴드로그램으로 확인 (계층적 군집분석)
3.6. Sample

- Sample 에서는 First rows (처음 10개의 샘플), Last rows (마지막 10개의 샘플)을 확인할 수 있다.
- pandas dataframe의 head(10), tail(10)과 같은 기능으로 실제 데이터 샘플을 통해 데이터 형태를 확인할 수 있다.
3.7. Widget 구성 (참고)

- 참고로 위젯으로 출력할 경우 위의 6가지 기능이 탭으로 요약되어 출력되어 보다 편리하게 결과를 확인할 수 있다.
개인적으로 다른 EDA 라이브러리와 비교했을 때 실질적으로 필요한 분석 기능들을 포함하고 있고, 결과 화면도 깔끔한 편이라 초기 EDA 과정에서 시간을 절약하는데 매우 유용한 라이브러리라고 느꼈다. 다만, Target 변수에 대한 분석을 포함하지 않는 점과 (필요한 경우 Sweetviz 활용 가능) 대용량 데이터의 경우 시간이 오래 걸린다는 점이 아쉬운 점이라고 생각한다.
4. 참고
[1] https://www.kaggle.com/datasets/jsphyg/weather-dataset-rattle-package
'Python' 카테고리의 다른 글
효율적인 프로젝트 관리를 위한 가상환경 구축 방법 (0) | 2023.12.11 |
---|---|
pandas.date_range - 주기적인 날짜 데이터 생성하기 (0) | 2022.07.05 |
[python] ConfigParser 이용한 외부인자 관리 (0) | 2022.06.07 |
[Python] strftime & strptime 비교 정리 (0) | 2022.05.25 |
[Python] pandas.melt() (0) | 2022.05.10 |