Certificate/data analytics-Google

Missing Data 처리하기, isnull, isna, fillna, dropna, any, drop_duplicated

Olivia-BlackCherry 2023. 7. 10. 15:54

목차

    1. Missing Data

    없거나 빠진 데이터는 아래와 같이 불린다.   

    - N/A

    - NaN(Not a number)

    - 0과는 다른 의미이다. 

     

     

    2. 처리하는 방법

    각각의 데이터셋마다 missing data의 출처가 다르고, 처리하는 방법도 다를 것이다. 

    보편적으로 missing data를 처리하는 방법이 무엇인지 알아보자. 

    1) 데이터의 소유자에게 missing값을 무엇으로 채울지 묻는다. 새롭게 데이터를 수집할 수도 있다. 하지만 시간이 오래 걸릴 것이다.

    2) NaN값이 많지 않고 크게 영향을 미치지 않는다면, 해당 열, 행, 값을 삭제한다. 하지만 이것은 결과의 왜곡을 발생시킬 수 있다. 

    3) NaN 카테고리를 만든다.  

    4) 인접값, 중앙값, 평균값 등으로 대체한다. 

     

     

    3. 결측치 처리를 위한 파이썬 코드

    pd.isnull(df_joined)

    >>각각의 row가 Null인가에 대해 True, False로 나온다. 

     

    df_companies.isnull().sum()

     

    df_joined.info()

    >> Non-Null Count로  Null값의 개수를 알 수 있다. 

     

    pd.any()

    any는 isna() 함수와 함께 쓰기를 권장한다. any()함수를 쓰면 0, False, NaN 값이 해당축(axis=0 또는 1) 하나라도 있으면 False를 반환하고, 없으면 True를 반환한다. 

     

    dropna()

    missing values를 모두 삭제한다.

    df = pd.DataFrame({'A': [1, 2, np.nan],
                       'B': [4, np.nan, 6],
                       'C': [7, 8, 9]})
    df.dropna(axis=1)

    df = pd.DataFrame({'A': [1, 2, np.nan],
                       'B': [4, np.nan, 6],
                       'C': [7, 8, 9]})
    df.dropna()

     

    fillna(????)

    결측치를 대체한다. 

    fillna(0) 0으로 대체

    fiilna(df.mean()) 평균값으로 대체

    fillna(method='backfill') 가장 가까이 있는 뒤의 값으로 대체

    fiilna(method='pad') 앞의 값으로 대체

    df_companies.fillna(method='backfill')
    df_companies.fillna(method='pad')

     

     

    4. Duplicated Data

    중복 데이터

    1) 중복 데이터를 확인한다. 

    pd.duplicated()

     2) 중복 데이터를 삭제한다. 

    drop_duplicateds()

     

     

     

    5. 예시

    Sales 컬럼의 null값 제거

     

    1) isna() 의 not 구문 이용

     

    2) dropna의 subset 이용

     

     

    data, 데이터교육, 코딩교육, 데이터분석