머신러닝 | EDA (탐색적 데이터 분석) | 기술통계를 이용한 EDA | 시각화를 이용한 EDA

    728x90

     

    1. EDA란?

     

    ▶ 탐색적 데이터 분석 (Exploratory Data Analysis, EDA)

    • 데이터의 기술통계 내용 확인, 시각화 등을 통해 데이터를 이해하고 탐구하는 과정
    • 데이터에 대한 정보를 얻고, 적절한 모델링에 대한 정보도 얻을 수 있음

    2. 예시 데이터 가져오기

     

    ▶ 라이브러리 가져오기

    import pandas as pd
    import matplotlib.pyplot as plt 
    import seaborn as sns

     

    ▶ seaborn 라이브러리_tips 데이터 불러오기

    tips_df = sns.load_dataset('tips')
    tips_df.head(3)

    • total_bill : 총 계산서 금액
    • tip : 받은 팁 금액
    • sex : 성별
    • smoker : 흡연 여부
    • day : 식사하러 온 요일
    • time : 식사하러 온 시간대
    • size : 동행 인원

    3. 기술통계를 통한 EDA 예시

     

    ▶ .info 함수로 데이터 정보 살펴보기

    • 데이터의 info 내용을 살펴보면 null 값 여부 및 몇 개의 null 값이 있는지 확인 가능
    • 수치형 데이터와 범주형 데이터 확인 및 구분 가능
    tips_df.info()

    • 전체 244개의 null이 없는 데이터
    • 수치형 데이터 : total_bill, tip, size
    • 범주형 데이터 : sex, smoker, day, time

    ▶ .describe 함수 사용

    • .describe() 만 하면 수치형 데이터에 대한 기술통계만 보여줌
    • .describe()의 괄호 안에 include = 'all' 옵션을 주면 범주형 데이터에 대한 기술통계도 볼 수 있음
    tips_df.describe(include='all')

    • 수치형 데이터_이상치 확인 가능
      • min값, max값 확인
      • 이상치에 따라 mean값이 얼마나 끌려 올라갔는지, 내려갔는지 추측해보기
      • std와 25%, 50%, 75% 값으로 분포 추측해보기
    • 범주형 데이터
      • unique값 만큼의 항목이 존재함을 알 수 있음
      • top을 통해 가장 빈도 수가 많은 항목의 이름 확인 가능
      • freq값을 통해 가장 빈도 수가 많은 해당 항목이 몇 개인지 확인 가능

    4. 시각화를 이용한 EDA 예시

     

    4-1) countplot

     

    ▶ 범주형 자료_빈도 수

    - 방법: 범주형 데이터의 각 카테고리별 빈도 수를 나타낼 때 

    • x축 : 범주형 자료
    • y축 : 자료의 빈도 수
    sns.countplot(data=tips_df, x='day', palette='Set3')


    4-2) barplot

     

    ▶ 범주형 자료_평균 비교

    - 방법 : 범주형 데이터의 각 카테고리에 따른 수치형 데이터의 평균을 비교

    • x축 : 범주형 자료
    • y축 : 수치형 자료 
    sns.barplot(data=tips_df, x='sex', y='tip', palette='Set3')


    4-3) boxplot

     

    ▶ 수치형 & 범주형 자료_기술통계 정보 확인

    - 방법: 데이터의 분포, 중앙값, 사분위 수, 이상치 등을 한 눈에 표현하고 싶을 때 사용

    • x축 : 수치형 & 범주형 자료
    • y축 : 수치형 자료
    sns.boxplot(data=tips_df, x='time', y='total_bill', palette='Set2')

     


    4-4) histplot

     

    ▶ 수치형 자료_ 빈도 수

    - 방법: 연속형 분포를 나타내고 싶을 때, 데이터가 몰려있는 구간을 파악하기 쉬움

    • x축 : 수치형 자료
    • y축 : 자료의 빈도 수

    ① seaborn 활용

    sns.histplot(data=tips_df, x='total_bill')

     

    ② matplotlib 활용

    plt.hist(tips_df['total_bill'])
    
    # 다음의 코드도 동일한 그래프
    # tips_df['total_bill'].hist()
    # tips_df['total_bill'].plot.hist()
    
    plt.show()


    4-5) scatterplot

     

    ▶ 수치형 자료_상관관계

    - 두 연속형 변수 간의 관계를 시각적으로 파악하고 싶을 때 사용

    • x축 : 수치형 자료
    • y축 : 수치형 자료
    sns.scatterplot(data=tips_df, x='total_bill', y='tip')


    4-6) pairplot

     

    전체 변수에 대한 시각화

    - 방법 : 한 번에 여러 개의 변수를 동시에 시각화하고 싶을 때 사용

    • x축 : 범주형 또는 수치형 자료
    • y축 : 범주형 또는 수치형 자료
    • 대각선 : 히스토그램 (분포)
    sns.pairplot(data=tips_df)

    728x90

    댓글