본문 바로가기
데이터 분석

판다스 데이터 전처리

by JoinInNoetic 2023. 11. 7.

※ 라이브러리 임포트

 

◆ 결측값 처리

    ▶ 결측값 확인

        ●  결측값 개수 계산

    df.value_counts(dropna=False)    # dropna=False : NaN데이터를 제거하지 않고 count

 

        ● 결측값 찾기

    df.isnull()    # null -> True로 

    df.notnull()    # null -> False로

    df.isnull().value_counts()    # True, False 개수 count

    df.isnull().sum()    # True를 1로 계산하여 총합 -> null값 개수 계산 

 

    ▶ 결측값 처리

        ● 결측값 삭제

    df.dropna(axis=1,            # 결측값 있는 컬럼 삭제

                     thresh = 500)    # 결측값이 500개 이상인 것 삭제

    ※ axis = 0 , 1    # 0: 행 , 1 : 열   /  기본값 0

    df.dropna(subset=['age'], how='any', axis=0)    # subset : 'age'컬럼에 적용 ( 리스트형태로 해야함 )

                                                                             how : 방법 설정('any' : 결측치가 존재하면 제거, 'all' : 모두 결측치면 제거)

 

        ● 결측값 대체

            → 평균값으로 대체

    df.fillna(df.mean(axis=0), inplace = True)    # df의 평균으로 결측값 채움  /  inplace : 해당 df에 적용

 

            → 최빈값으로 대체

    df.fillna(df.value_counts(dropna=True).idxmax())    # df의 값들을 결측값을 제외하고 count한 후 가장 값이 큰 것으로

                                                                                        결측값 대체

 

            → 결측값의 앞의 값으로 대체

    df.fillna(method='ffill')    # method : 방법설정

                                            ffill : 앞의 값으로 채우기(foward fill), bfill : 뒤의 값으로 채우기(backward fill) 

 

◆ 중복값 처리

    ● 중복값 찾기

    df.duplicated()    # 중복값 찾기(행기준으로 앞에 똑같은 원소값이 나왔는지 boolean)

 

    ● 중복값 제거

    df.drop_duplicates()    # axis=0 , 1   / 기본값 : 0

 

◆ 연산 전처리

 

◆ 데이터 프레임 자료형

    ● 자료형 확인

    df.dtypes

    df.info()

 

    ● 자료형 변환

    * df.unique()    # 고유값 확인

    * np.nan    # numpy함수 nan(null) (결측값)

    df.astype('float')    # df의 자료형을 'float'형으로 변환

 

◆ Binning

    count, bin_ = np.histogram(df, bins=3)    # bin : 간격; 데이터를 간격으로 나눔

    pd.cut(x=df,                 # 데이터 선택

               bins = bin_,      # 데이터 구간 리스트

               labels = bin_names,    # 경계값 이름

               include_lowest = True)    # 첫 경계값 포함 여부