Python/Tensorflow

[Tensorflow] TFDV 활용 파이썬 데이터 EDA 실습 예제

jimmy_AI 2022. 8. 30. 23:08
반응형

Python EDA by tensorflow_data_validation

오늘은 파이썬 텐서플로우에서 제공하는 TFDV 모듈을 활용하여

데이터에 대한 EDA 과정을 유용하게 진행하는 방법에 대하여 간략하게 정리해보겠습니다.

 

 

데이터셋 로드

이번 실습에서는 예시로 타이타닉 데이터셋에 대하여 EDA를 진행해보겠습니다.

아래의 코드로 해당 데이터프레임을 바로 불러올 수 있습니다.

import seaborn as sns
import pandas as pd

df = sns.load_dataset('titanic')

df

 

 

 

TFDV 모듈 설치

이번 글에서는 tensorflow_data_validation(TFDV)를 활용하여 EDA를 진행하는 방법을

살펴볼 것이기에 해당 모듈이 설치되지 않았다면 설치가 필요합니다.

 

아래의 코드를 실행하여 터미널 상에서 바로 해당 모듈을 설치할 수 있습니다.

!pip install protobuf==3.19.4
!pip install tensorflow_data_validation

 

반응형

 

TFDV 활용 EDA 진행 기본 예제

먼저, 데이터프레임 전체에 대하여 각 feature의 분포에 대한 EDA를

TFDV를 통하여 진행해보도록 하겠습니다.

 

다음 코드처럼 statistics를 먼저 생성한 뒤, visualize를 이어서 진행해주시면 됩니다.

import tensorflow_data_validation as tfdv

stats = tfdv.generate_statistics_from_dataframe(df)

tfdv.visualize_statistics(stats)

그러면 위와 같이 창이 뜨고 통계량 및 히스토그램 분포가 feature마다 정리된 모습을

살펴보실 수 있습니다.

 

각 부분에 대한 설명을 간략하게 정리하면

가장 왼쪽 위 빨간색 부분은 feature의 종류 및 정렬 기준을 고르는 부분이고

 

그 아래에는 숫자형 feature범주형 feature로 나누어 통계량 및 히스토그램이

나타나있습니다.(참고로, 자세히보시면 통계량 종류도 두 종류 feature에서 다릅니다.)

 

그리고 오른쪽의 노란색 부분에서는 사분위수 / 로그 스케일 등 항목을 지정할 수 있습니다.

 

 

데이터 그룹 간의 분포를 비교하려는 경우

TFDV에서는 나뉘어져있는 데이터들 사이의 분포 비교도 마찬가지로 진행이 가능합니다.

 

먼저, alive feature를 기준으로 두 데이터프레임으로 분할하도록 하겠습니다.

df_survived = df.loc[df['alive'] == 'yes']
df_perished = df.loc[df['alive'] == 'no']

 

이렇게 분할된 데이터셋 간의 비교 EDA를 진행하고 싶은 경우에는

아래 코드처럼 statistics를 각각 따로 생성해준 뒤,

visualize 과정에서 양쪽 분포에 대한 정보를 지정해주시면 됩니다.

survived_stats = tfdv.generate_statistics_from_dataframe(df_survived)
perished_stats = tfdv.generate_statistics_from_dataframe(df_perished)

tfdv.visualize_statistics(
    # 시각화할 stats 지정
    lhs_statistics=survived_stats, 
    rhs_statistics=perished_stats, 

    # 시각화 창에 표시할 그룹 이름 지정
    lhs_name='survived', 
    rhs_name='perished'
)

이렇게하면 위처럼 두 데이터 간의 각 feature 분포 차이를 한 눈에 알아볼 수 있습니다.

(오른쪽 히스토그램 설정 시 percentages 항목에 체크하여

각 그룹별 데이터의 전체 수에 대한 비율로 히스토그램을 그린 점도 참고해주세요.)