본문 바로가기

Analytics/Study

실전#2 데이터로 살펴보는 우리 아이 학습 성공/실패 요소(3)

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()

 
위와 같은 예시로 확인할 수 있으며,
몇가지 결과와 같이 설명하면 이렇다.

부모의 학교 만족도의 경우 결과와 해당 변수가 서로 연관이 있을 수 있어서 분석 시 제외하고 보는게 적절할 수도 있다. eg) 성적을 보고 부모가 만족


 
 
또한, 대상(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값을 활용하여 위에서 살펴본 범주형 데이터의 분포를 조금 더 직관적으로 확인할 수 있다.

성별
StudentAbsentday 에 대한 분포 비교


특히 컬럼 내 값 분포가 많은 Topic의 경우 조금 더 쉽게 파악이 가능하다는 장점이 보인다. (위 아래 비교)

Topic - 수치형 변환


강의에서는 이정도로 EDA를 마쳤는데
여기서 각 컬럼별로도 수치형으로 변환하는 작업이 필요하지 않을까 하는 의문이 들었다.

이건 개인적으로도 EDA를 진행하면서 같이 시도해봐야되겠다.
(바로 다음 강의가 전처리 과정이니, 여기서 다루지않을까 하는 기대감을 갖고 들어봐야겠다)
 

http://bit.ly/3Y34pE0

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.