Week 6-1. 데이터 전처리

BEBELOG·2022년 8월 14일
0

데이터 전처리

  1. 의미
    Data Preprosessing
    raw data를 데이터 분석 목적과 방법에 맞는 형태로 처리하기 위해 불필요한 정보를 분리 제거하고 가공하는 예비조작

  2. 목적
    빅데이터 분석, 데이터 마이닝을 위해 각 알고리즘에 맞는 데이터를 준비하기 위해

  • 빅데이터 :
    1) 3V : Volume / Variety / Velocity + Value/Visualization/Veracity
    2) 데이터 변화 -> 기술 변화 -> 인재, 조직 변화
  • 데이터 마이닝 : 많은 정보 가운데 숨겨진 상관관계 발견하여 미래에 실행 가능한 정보를 추출하고 의사결정에 활용 -> 데이터베이스 마케팅의 핵심 기술
  1. 종류
  • 데이터 정제(cleaning) : 결측값 채우기, 이상치 식별 또는 제거, 잡음 섞인 데이터 평활화 등
  • 데이터 변환(smoothing) : 정규화
  • 데이터 필터링(filtering) : 데이터 품질 향상
  • 데이터 통합(integration)
  • 데이터 축소(reduction)

파이썬에서의 데이터 전처리

파이썬의 라이브러리 : 함수와 메소드로 이루어진 모듈 집합

Numpy

cf. 다중의 리스트 구조 vs 배열
배열은 리스트와 다르게 같은 데이터 타입으로 이루어짐

numpy는 다차원 배열 계산에 활용 / Pandas와 함께 연계
대부분의 정형 데이터 세트는 행렬로 이루어져 있고 딥러닝 분석에서 가능

Pandas

표 형태의 데이터를 조작하는데 특화
엑셀이 제공하는 거의 모든 기능을 구현
데이터 베이스 문도 손쉽게 구현

  1. 데이터 슬라이싱
  • 인덱싱 방식으로 데이터 읽기/쓰기/슬라이싱
  • 조건문(if)을 활용
  • 검색이 빠름
  • df.loc : 특정레이블
  • df.iloc : 숫자 인덱스를 통해 접근(integer location의 약어) -> 컴퓨터가 읽을 수 있는 인덱스값
  • df.isin() : 참,거짓을 판단해서 특정 조건이 맞는 데이터만 추출/ 내가 정한 리스트 안에 있는 값을 가져올 때.
    • append : 추가
    • drop : 삭제
  1. 통계값 계산, 정렬
  • info() : 요약정보 확인

  • shape : 튜플 형태로 데이터 프레임의 형태 (row, column)

  • head , tail로 부분 정보 출력

  • describe : 숫자형 데이터의 요약 통계정보 확인

  • sort : 정렬

  • sort_values(by='') : 데이터프레임의 값을 기준으로 정렬 + 복수 값을 기준으로도 데이터 프레임 정렬 가능

  1. 피벗데이블, 그룹통계
  • 피벗테이블 : 방대한 표의 데이터를 요약하는 통계표

    • pd.pivot_table(df, index = '행 인덱스', columns = '열 인덱스', values = '조회하고 싶은 값', aggfunc='집계방식')
  • Groupby : 같은 값을 그룹으로 묶어서 분석

  1. join, merge : 데이터 합치기
  • JOIN : 두 개의 데이터 프레임을 겹치는 인덱스 기준으로 합치는 것
    • df1.join(df2, on='키 인덱스', how ='조인방법(inner, left, right, outer)', sort='정렬여부')
    • 키로 지정할 열을 인덱스화 *
      set_index('키로 지정할 열')
  • Merge : 두 개의 데이터 프레임을 겹치는 값 기준으로 합침
    • 두 개이상 겹치는 칼럼만 있으면 됌.
    • pd.merge(df1, df2, on='키 칼럼', how='방법', sort='정렬여부')
  • Concat : 단순 합
  • 행이나 열방향으로 붙이기(axis=0 : 행방향, axis=1 : 열방향)
  • pd.concat([df, df2], axis='붙이는 방향')
  1. 자료형 변환, 연산
  • astype() : 자료형 변환
  • datetime : 날짜와 시간 데이터를 처리하기 위해 지원하는 자료형, 날짜 슬라이싱과 시간 연산 가능
    • pd.to_datetime(df['칼럼명'])
    • pd.to_timedelta(df['칼럼명'], unit='시간 간격 단위' / day, hour, min, sec
  1. 결측값, 중복처리
  • 결측값 : NaN, N/A, NULL, 0

  • 결측값 제거 : dropna() * subset : 해당컬럼만 검사

  • 결측 데이터 치환 : fillna() 결측값을 대체할 값

    • mean /value_counts().index[0]
  • reset_index() : 인덱스로 재정렬 - 결측치를 제거하거나, 전처리하는 과정에서 데이터 프레임의 인덱스가 바뀌는 현상이 나타나는데 마지막에 인덱스 정렬을 해주면 분석과정의 문제 줄일 수 있음

  • 중복값

    • duplicated() : 행이 완벽히 중복된 여부 검사
    • drop_duplicates() : 중복행 제거
    • drop_duplicates(subset = ['Group']) : 특정 열을 기준으로 제거
    • drop_duplicates(subset = ['Group'], keep='last') : 특정 열을 기준으로 제거를 하나 마지막 값은 남긴다.
  1. apply, lambda,map
  • apply : 데이터에 구체적인 로직을 적용하고 싶을 때
    def 함수 만들고 apply
  • lambda : apply에서 def 정의된 함수와 동일한 기능, 한줄로 편하게 작성 가능
    • lambda '입력변수': '리턴값' '조건문(옵션)'
  • map : 데이터 값을 특정 값으로 매핑하고 싶을 경우
    • df['컬럼명'].map('매핑 정보')
  1. 상관관계 : corr

[출처 : 한 번에 끝내는 직장인 파이썬]

profile
비전공자 Will be 전문가

0개의 댓글