ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 빅데이터분석기사 실기 연습예제 - 1. 데이터 전처리
    자격증/빅데이터분석기사 2021. 8. 23. 13:34
    반응형

    빅데이터분석기사 실기 시험을 보고나서 후배들에게 도움을 주고자 만들게 된 예시입니다.

    첫 시험(2회차, 1회는 캔슬)이라 상대적으로 쉬었을 수도 있지만 다음 차수도 이번 난이도와 같다는 가정하에 작성하였습니다.

    데이터 준비

    데이터는 널리 쓰이는 Titanic 데이터를 사용하며 다운로드 경로는 아래와 같다.

    https://www.kaggle.com/c/titanic

     

    Titanic - Machine Learning from Disaster | Kaggle

     

    www.kaggle.com

    해당 데이터는 타이타닉호에 탑승한 승객들의 데이터이며 생존여부(Survived)를 정답값으로 가진다.

    본 포스팅에서는 데이터 전처리가 목적이므로 train.csv만 활용한다.

     

    라이브러리 선언

    import pandas as pd
    import numpy as np
    # as는 해당 모듈의 별칭을 지정한다.
    # 따라서 pandas를 pd라는 별칭으로 지정한다는 의미이다.

    통계값 구하기

    # 최댓값 구하기
    max_v = np.max(df['Age'])
    print('최댓값 : ',max_v)
    
    # 최솟값 구하기
    min_v = np.min(df['Age'])
    print('최소값 : ',min_v)
    
    # 총합 구하기
    sum_v = np.sum(df['Age'])
    print('총합값 : ',sum_v)
    
    # 중앙값 구하기
    median_v = np.median(df['Age'])
    print('중앙값 : ',median_v)
    
    # 평균 구하기
    mean_v =np.mean(df['Age'])
    print('평균값 : ',mean_v)
    
    # 표준편차 구하기
    std_v = np.std(df['Age'])
    print('표준편차 : ',std_v)
    
    # 사분위수 구하기
    q1, q3 = np.quantile(df['Age'], [0.25,0.75])
    print('사분위수(25%,75%) : ',q1,q3)

    실행 결과

    위 코드를 실행했을 때의 결과이다.

    중앙 값과 사분위수가 nan으로 나타나는 것은 결측값(nan)이 섞여 있기 때문이다.

    numpy에서는 결측치를 알아서 배제하고 계산해 주는 함수도 제공된다.

    단순하게 앞에 nan을 붙이면 된다.

    # 결측치 배제하고 중앙값 구하기
    median_v = np.nanmedian(df['Age'])
    print('중앙값 : ',median_v)
    
    # 결측치 배제하고 사분위수 구하기
    q1, q3 = np.nanquantile(df['Age'], [0.25,0.75])
    print('사분위수(25%,75%) : ',q1,q3)

    결측값 채우기

    Age 컬럼의 결측치를 평균 값으로 채워보자.

    x = np.mean(df['Age'])
    df['Age'] = df['Age'].fillna(x)

    특정 값을 포함한 row 제거하기

    나이가 70세 이상인 데이터를 제거해보자

    df = df[df['Age']<70]

    나이가 20세 미만이거나 60세 이상인 데이터를 제거해보자

    df = df[ (20<=df['Age']) & (df['Age']<60) ]

    컬럼 제거하기

    하나의 컬럼 제거하기

    df = df.drop(['Age'], axis=1)
    # 또는
    del df['Age']

    여러개의 컬럼 제거하기

    df = df.drop(['Age','Cabin'], axis=1)

    컬럼 추가하기

    추가할 컬럼 이름(new_column)에 리스트를 입력하여서 컬럼을 추가 할 수 있다.

    이때 추가되는 리스트의 길이는 기존의 데이터프레임의 길이와 동일해야한다.

    lst = [i for i in range(len(df))]
    df['new_column'] = lst

    데이터 프레임 합치기

    df_total = pd.concat([df_1,df_2],axis=1)

    문자열 처리

    import re
    pattern = r'[^\d-]'
    sub_str = re.sub(pattern,'','-1dd1ed1')
    print(sub_str)

     

     

    반응형

    댓글

Designed by Tistory.