Statistics/ML | Python

머신러닝이 뭐여 6탄 (feat. EDA !! )

clodagh 2023. 2. 18. 20:58

Intro

- EDA, 탐색적 데이터 분석개념과 하는 법

 

범주형 데이터 탐색 (categorical)

info()

  • object : string 형태
  • float, int : numeric 형태

value_counts()

  • levels() in R
  • data['특성이름'].value_counts()

 

수치형 데이터 탐색 (int64, float64)

describe()

  • 기초 통계 값을 확인
  • data.describe()

 


시각화를 통한 데이터 탐색

막대그래프

  • 주로 범주형 데이터의 빈도 분석
    • x = data['특성이름'].value_counts().index → 범주의 이름이 할당됨plt.bar(x, y)
    • y = data['특성이름'].value_counts() → 빈도수가 할당됨
x = data['gender'].value_counts().index
y = data['gender'].value_counts()
plt.bar(x,y)

코딩엑스

히스토그램

  • 수치형 데이터 빈도 분석
  • plt.hist(data['특성이름'])

 

상관관계

  • 상관관계는 데이터 특성 간의 관계로, 두 데이터가 서로 어떤 관계에 있는지 파악하기 위한 것
  • 두 변수 사이에 어떠한 연관성이 있다면 상관관계가 있다 라고 해석

코딩엑스

  • 상관계수 r은 -1 부터 1 사이의 값을 가짐
  • 상관계수가 r의 수치 : 얼마나 데이터 간에 얼마나 강한 상관이 있는지 알 수 있음

  • 범주형 데이터에서는 사용할 수 없음
  • data.corr()
  • 상관계수를 살펴보면 데이터 사이의 관계를 파악하는데 도움이 됨
  • 상관계수 분석을 하기 전에na 또는 outlier 전처리를 미리 해주어야함

 

그룹별 연산

코딩엑스

  • groupby 함수
  • 주로 범주형 특성을 기준으로 나눔
  • data.groupby('그룹범주특성').연산함수()
    • 연산함수의 예시 : 합(sum), 최댓값(max), 최솟값(min), 평균(mean) 등
  • data.groupby('그룹범주특성').aggregate(['연산함수1', '연산함수2', ...])

 

탐색적 데이터 분석 예시

 

코딩엑스

 

  • 데이터셋에서 원하는 특성을 삭제할 때에는 del 기능을 이용할 수 있음
    • del data['특성이름']
  • 파이그래프
    • import matplotlib as plt
    • plt.pie(count, label = name)
  • data.groupby('그룹별로 보고 싶은 열').agg(['연산함수1', '연산함수2' …])[['특성1', '특성2']]
  • 수치형 → 범주형
    • cut 함수에서 앞의 기준은 포함하지 않지만 뒤의 기준의 숫자는 포함하여 변환
age_cut = [19,29,39,49]
age_label = ['20대','30대','40대']

data['age_group'] = pd.cut(data['age'],age_cut, labels = age_label)

print(data.info())