머신러닝

EDA

ROSEV 2021. 7. 15. 20:14

python의 pandas를 통한 기초 EDA(Exploratory Data Analysis)

: 데이터를 분석하기 전 탐색하여

  • 패턴을 발견하거나
  • 데이터의 특이성을 확인하거나
  • 시각화를 통해 가설을 검정하는 과정 등을 말합니다.

데이터셋을 불러온 후 해야하는 것

  • 행과 열의 수 체크 # (DataFrame.head(), DataFrame.shape)
  • 열에 헤더가 있는지(컬럼 명 체크) # (DataFrame.head()
  • 결측 데이터(Missing Data) 체크 # isna, isnull

 

EDA관련된 함수

Missing Data

  • isna : NA값을 확인합니다.
  • isnull : NULL값을 확인합니다
  • notnull : NULL값을 확인합니다
  • dropna : NA값 제거
  • fillna : NA값 채우기

Data Frame

  • index : index 확인
  • columns : columns 확인
  • dtypes : 컬럼 별 타입(ex. object, float ..)
  • info : Non_Null Count와 컬럼별 타입
  • select_dtypes : DataFrame.select_dtypes(include = 'float'or 'object') include 값을 통한 컬럼 타입별 조회
  • loc, iloc
    • DataFrame.loc['a'] index의 a행만 선택 -> 시리즈 반환,
    • DataFrame.loc[['a', 'b']] index의 a,b행 선택 -> 데이터프레임 반환
    • DataFrame.loc[['a', 'b'], ['c', 'd', 'e']] c,d,e열의 index a,b행 선택 -> 데이터프레임 반환
    • DataFrame.loc[0,'a':'z'] index 0행의 a부터 z열까지 선택
    • DataFrame.iloc[0] 첫째행 선택
    • DataFrame.iloc[:0] 첫째열 선택
    • DataFrame.iloc[:, 0:3] 첫 세개의 열만 선택
    • DataFrame.iloc[[1,2], [1,3,4]] 두번째, 세번째 행과 두번째, 네번째, 다섯번째 열 선택
  • insert
    • DataFrame.insert(0, 'Column', ['data']) 0번째 열에, 'Column'이라는 이름으로 내용은 'Data'로 열 삽입
  • head, tail
    • DataFrame.head() 레코드의 순서상 위 5개
    • DataFrame.tail() 레코드의 순서상 마지막부터 위로 5개
  • apply
    • result=object.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
    • object.apply(함수, axis=(0 or 1) A열에 함수 적용
    • DataFrame['A'].apply(함수) A열에 함수 적용
    • DataFrame['A'].apply(lambda x : x + 1) 사칙연산과 같이 단순한 작업의 경우 함수 대신, (lambda 입력값 : 결과 값)으로 사용 가능
  • drop
    • DataFrame.drop(['a','b']) index 중 a,b 삭제
    • DataFrame.drop(index=0) 첫째 index 삭제, axis = 0 기본 값
    • DataFrame.drop('A_Col', axis=1) 'A_col'이라는 이름 컬럼 삭제
  • rename
    • DataFrame.rename(columns={'기존 속성명':'바꿀 속성명', index={'기존 인덱스명' : '바꿀 인덱스명'})
  • replace
    • object.replace(old, new, [count])
    • object.replace(",", "") object의 ","을 ""로 대체
    • object.replace(",", "", 1) object의 ","을 1번만 ""로 대체
  • nsmallest
    • heapq.nsmallest(1, list) 리스트 내 가장 작은 수 1개 반환
  • nlargest
    • heapq.nlargest(3, list) 리스트 내 가장 큰 수 순서대로 3개 반환
  • sort_values
    • DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)
    • DataFrame.sort_values(by='A') A라는 컬럼 기준으로 오름차순 정렬 한다.
    • DataFrame.sort_values(by='A', ascending=False) A라는 컬럼 기준으로 내림차순 정렬 한다.
    • DataFrame.sort_values(by='A', ascending=False, na_position='first) A라는 컬럼 기준으로 내림차순 정렬하되 NA값이 있는 경우 첫번째로 순서가 변경
  • sort_index
    • DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False, key=None
    • DataFrame.sort_index() index기준 오름차순으로 정렬
    • DataFrame.sort_index(ascending=False) index기준 내림차순 정렬
  • value_counts
    • DataFrame.value_counts(subset=None, normalize=False, sort=True, ascending=False, dropna=True)[source]
    • DataFrame.value_counts() 동일한 레코드의 합계 반환
  • describe
    • object.describe(percentiles=None, include=None, exclude=None, datetime_is_numeric=False)
    • numeric_series.describe() numeric Series 기준 count, mean, std, min, 사분위 값, max
    • categorical_series.describe() categorical Series 기준 count, unique, top, freq
    • timestamp_series.describe() timestamp Series 기준 count, mean, std, min, 사분위 값, max
    • DataFrame.describe() 컬럼 별 타입에 따라 반환
  • shape
    • DataFrame.shape DataFrame의 (행, 열)형태로 반환

 

데이터 시각화

: 데이터를 시각화 하는 이유는

  • 데이터의 trend 확인 및 탐색 (EDA)
  • 인사이트를 얻고, 해당 내용을 직관적으로 이해할 수 있게하며 강조할 수 있기 때문

vis

matplotlib.pyplot as plt

  • plot
    • plt.plot([1,2,3,4)
  • plot.bar
    • bar plot 출력
  • plot.barh
    • 가로 bar plot 출력
  • plot.box
    • box plot 출력
  • plot.density
    • 밀도 plot 출력
  • plot.hist
    • 히스토그램 plot 출력
  • plot.line
    • 선그래프 출력
  • plot.pie
    • 파이차트 출력
  • plot.scatter
    • 산점도 출력

'머신러닝' 카테고리의 다른 글

다중선형회귀( Multiple Linear Regression)  (0) 2021.08.03
단순선형회귀( Simple-Regression )  (0) 2021.08.02
Clustering  (0) 2021.07.31
High dimensional data, 차원 축소  (0) 2021.07.31
Feature Engineering, Data Manipulation  (0) 2021.07.15