EDA 2번째 과정
앞서 살펴본 EDA 과정이 수치형 데이터에 대한 탐색이었다면
이번에는 범주형 데이터에 대한 탐색을 주로 다루게 된다.
범주형 데이터를 시각화로 파악하기 위해 주로 사용한 방법은 Countplot이다.
sns.countplot(x='Class', data = df, order = ['L', 'M', 'H'])
이렇게 기본적인 countplot으로 원하는 기준별 분포를 알 수 있다.
여기에 추가로 hue 기능을 활용하여 각 변수별 Class의 비교가 가능하다
# 성별 비교
sns.countplot(x='gender', data = df, hue = 'Class', hue_order = ['L', 'M', 'H'])
# 국적 비교
sns.countplot(x='NationalITy', data = df, hue = 'Class', hue_order = ['L', 'M', 'H'])
plt.xticks(rotation = 90) ## 그래프 표현 시 겹침으로 옵션 추가
plt.show()
# 부모의 만족도(ParentschoolSatisfaction) 비교
sns.countplot(x='ParentschoolSatisfaction', data = df, hue = 'Class', hue_order = ['L', 'M', 'H'])
# Topic 비교
sns.countplot(x='Topic', data = df, hue = 'Class', hue_order = ['L', 'M', 'H'])
plt.xticks(rotation = 90) ## 그래프 표현 시 겹침으로 옵션 추가
plt.show()
위와 같은 예시로 확인할 수 있으며,
몇가지 결과와 같이 설명하면 이렇다.
또한, 대상(Target)이 되는 Class 컬럼을 범주형 데이터에서 수치형 데이터로 변환하여 보는 과정도 함께 설명해주었는데
이런 작업은 단순 Target에만 국한되는 것이 아니라 필요시 범주형 컬럼에도 해당될 수 있는 작업이다.
기존에는 이런 변환 작업이 필요할 때 if를 활용했었는데
map이라는걸 통해 간단히 작업이 가능했다.
# L : -1, M : 0, H : 1로 변환
df['Class_value'] = df['Class'].map(dict(L=-1, M=0, H=1))
변환된 Class_value값을 활용하여 위에서 살펴본 범주형 데이터의 분포를 조금 더 직관적으로 확인할 수 있다.
특히 컬럼 내 값 분포가 많은 Topic의 경우 조금 더 쉽게 파악이 가능하다는 장점이 보인다. (위 아래 비교)
강의에서는 이정도로 EDA를 마쳤는데
여기서 각 컬럼별로도 수치형으로 변환하는 작업이 필요하지 않을까 하는 의문이 들었다.
이건 개인적으로도 EDA를 진행하면서 같이 시도해봐야되겠다.
(바로 다음 강의가 전처리 과정이니, 여기서 다루지않을까 하는 기대감을 갖고 들어봐야겠다)
http://bit.ly/3Y34pE0
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'Analytics > Study' 카테고리의 다른 글
실전#2 데이터로 살펴보는 우리 아이 학습 성공/실패 요소(5) (0) | 2023.03.04 |
---|---|
실전#2 데이터로 살펴보는 우리 아이 학습 성공/실패 요소(4) (0) | 2023.03.03 |
실전#2 데이터로 살펴보는 우리 아이 학습 성공/실패 요소(2) (0) | 2023.03.01 |
실전#2 데이터로 살펴보는 우리 아이 학습 성공/실패 요소(1) (0) | 2023.02.28 |
실전#1 에필로그?! (0) | 2023.02.27 |