빅데이터 Ch.1 데이터 정제

·2020년 8월 10일
0

BigDataAnalysis

목록 보기
1/1

데이터 정제

데이터는 일반적으로 Cleansing을 거쳐야 분석에 사용할 수 있다.

1. pandas 패키지

python에서 data manipulation 및 analyzing할 때 가장 많이 쓰인다.
수치 테이블 및 시계열을 조작하기 위한 데이터 구조 및 연산 제공

  • .read_csv : csv 파일을 불러와 Table형태로 보여준다.

    import pandas as pd
    
    df_raw = pd.read_csv('data\FITNESS.csv', encoding = 'euc_kr')
    • encoding="euc_kr"
      : euc_kr은 한글 표현을 위한 문자 인코딩 방식이다.
  • .head : 읽어들인 csv raw table을 순서대로 5개 인스턴스(row)까지 보여준다.

    • 확인하는 과정에서는 너무 많은 데이터를 모두 볼 순 없으니까..??

    • 자매품 .tail 뒤에서 5개 보여준다.

2. 결측치(Null data) 정제하기

데이터 수집 과정에서 결측치가 발생되는 경우가 많기 때문에, 결측치를 정제해야 함수 사용에 Error가 발생하지 않고 결과에 왜곡이 없다.

2.1 결측치 확인

  • .isnull() : 테이블의 각 attribute의 결측치를 확인하고, True/False를 반환한다.

    • .isna()와 동일한 기능이다.
        NAME  GENDER    AGE  AGEGROUP  WEIGHT    OXY  RUNTIME  RUNPULSE  RSTPULSE  MAXPULSE
    0  False   False  False     False   False  False    False     False     False     False
    1  False    True  False     False   False  False    False     False     False     False
    2  False   False  False     False   False  False    False     False     False     False
    3  False   False  False     False   False  False    False     False     False     False
    4  False   False  False     False    True  False    False     False     False     False

2.2 결측치 처리

  • 문자열 결측치 처리

    • table[{column}].fillna({value}, inplace = True) : 테이블 colume을 선택한 후 결측치를 원하는 value값으로 바꿔준다.
    df_raw["GENDER"].fillna("여성", inplace = True)
  • 숫자형 결측치 처리

    groupby(범주형 변수), transform("집계함수")를 이용한 데이터 변환

    table[{column}].groupby("GENDER")["WEIGHT"].agg("집계함수")

3. 이상치(Ideal data)

3.1 matplotlib 패키지

python에서 data를 Chart 또는 Plot으로 그려주는 라이브러리 패키지이다.

  • 가장 많이 사용되는 Data Visualization Pakage!

  • Line Plot, Bar Chart, Pie Chart, Histogram, Box Plot, Scatter Plot 등의 다양한 차트와 플롯스타일 지원

  • pyplot을 사용해서 Chart나 Plot을 실행시켜 볼 수 있다(Visualization)

    • plt.show()

3.2 이상치 확인

  • boxplot

    boxplot: 상자수염도, figsize: 그래프 크기(x축, y축)

    import matplotlib.pyplot as plt
    
    df_raw.boxplot(figsize = (10, 4))

    ![image-20200810205133582](20.08.07 데이터 정제.assets/image-20200810205133582.png)

  • RSTPULSE 변수에서 이상치(100보다 큰 값) 확인

    • True/False로 표시
    df_raw["RSTPULSE"] >= 100
  • RSTPULSE 변수에서 이상치 제외한 인스턴스(row)들 취합

    df_fitness = df_raw[df_raw["RSTPULSE"] < 100]
    print(df_fitness.tail())
    • 자료의 개수 1개 줄어들었음
    • index는 그대로 유지 ( 28번만 제외된 것을 알 수 있다. )

0개의 댓글