주제

프로젝트 과정

 

EDA 프로젝트 전처리 과정 (3)

 

 

최종 학기에 0점을 받은 학생들

  • 분석 과정에서 G3(최종 성적)이 0점인 학생들이 있다는 걸 발견했다.
  • 처음에 결측치를 확인했을 때 결측치는 존재하지 않았다.
  • 따라서 최종 성적이 0점인 학생들을 찾아서 그 학생들의 데이터를 조회해봤다
  • 만약 다른 컬럼들도 말도 안되는 값이 들어있거나, 다른 학기의 점수 모두 0점이라면 제외시켜야 하기 때문이다.
select count(*) as '0을 받은 학생의 수'
from student_data
where g3 = 0;

-- 2학기에도 0을 받은 학생의 수
select count(*) as '0을 받은 학생의 수'
from student_data
where g3 = 0 and g2 = 0;
  • 최종 성적이 0점인 학생의 수는 38명이었고, 그 중 2학기도 0점을 받은 학생의 수는 13명이었다.
  • 해당 학생들의 데이터를 조회해본 결과, 다른 컬럼들의 값은 모두 잘 들어있었다.
  • 따라서, 최종 0점을 받은 학생들은 결측치의 0점이 아니라 다른 이유로 수업에서 F를 받았다고 해석할 수 있었다.
  • 그 이유가 자퇴나 전학일수도 있고, 아니면 시험 중 부정행위 같은 불미스러운 일이 있었을 수도 있기 때문에 제외하지 않기로 했다.

 

0점이 F를 뜻한다고 생각한 근거

  • 가설 : 38명의 학생들은 1학기 평균 성적이 낮을 것이고, 결석일이나 과거 F를 받은 수업이 0점을 받지 않은 학생들보다 많을 것이다
  • 총 38명의 학생들의 1학기 평균 성적을 성별 별로 조회해본 결과:
with zero_g3 as (
	select * from student_data
    where g3 = 0
)
select sex as '성별', avg(g1) as '1학기 평균 성적'
from zero_g3
group by 1
order by 2;

성별 별 평균 성적

 

  • 남녀 평균이 7점을 웃돌고 있었다.
  • 반면, 최종적으로 0점을 받지 않은 학생들의 평균 성적은 아래와 같았다.
  • 표본수의 차이가 크다하더라도 두 집단의 1학기 평균 성적 차이는 매우 컸다.
with include_g3 as (
	select * from student_data
    where g3 != 0
)
select sex as '성별', avg(g1) as '1학기 평균 성적'
from include_g3
group by 1
order by 2;

 

 

2번째 근거

  • 결석일수가 많다면 학업에 집중하지 못했다는 주장의 근거가 될 수 있으니, 결석일수를 확인해봤다.
  • 이때 연관이 높을 것 같은 가족관계와 평균 알코올 섭취량까지 함께 조회를 해보았다.
with zero_g3 as (
	select * from student_data
    where g3 = 0
)
select famrel as '가족관계', avg(dalc) as '주중 알코올 섭취량', absences as '결석일수', count(*) as '학생 수'
from zero_g3
group by 1, 3
order by 1;

조회 결과

  • 하지만 생각과는 다르게 결석일수가 모두 0이었고, 평균 알코올 섭취량도 매우 낮은 편에 속했다. 
  • 가족관계도 마찬가지로 매우 좋음(4 - 5) 범위에 몰려있었다.
  • 이를 통해 두번째 가설은 틀렸음을 확인했다.

 

3번째 근거

  • 마지막으로는 과거 F를 받은 수업의 개수였다.
  • 우선 0점을 받은 학생의 결과다 :
with zero_g3 as (
	select * from student_data
    where g3 = 0
)
select failures as '과거 F를 받은 수업의 수', count(*) as '학생의 수'
from zero_g3
group by 1
order by 1;

조회 결과

  • 크게 두 그룹으로 나눠보면 과거 한번도 F를 받아보지 않은 그룹(0)과 1번 이상 받아본 학생(1 - 3)의 차이를 볼 수 있다.
  • 이때 두번째 그룹에 속하는 학생들의 비율은 약 52.7%으로 절반을 차지했다.
  • 그 다음은 최종적으로 0점을 받지 않은 학생들의 데이터이다.
with exclude_g3 as (
	select * from student_data
    where g3 != 0
)
select failures as '과거 F를 받은 수업의 수', count(*) as '학생의 수'
from exclude_g3
group by 1
order by 1;

조회 결과

  • 조회 결과 약 17.6%의 학생들이 과거 1번 이상 F를 받아본 적이 있었다.
  • 물론 두 집단의 표본수 차이가 있지만 고등학생이 F를 받기 힘들다는 점을 감안한다면, 0점을 받은 학생들의 비율이 꽤나 크다고 할 수 있다.
  • 과거에도 F를 받았다면, 올바른 공부 습관이 잡히지 않았을수도 있고, 학업 자체에 관심이 적다고 볼 수도 있다.

 

결론

  • 가설의 대부분이 맞았고, 따라서 0점은 결측치보다는 최종적으로 F를 받은 것으로 보는 것도 괜찮다는 것이다.
  • 실제 분석을 위해 38명의 학생들을 제외시키지 않기로 결정했다.

 


느낀점

이 38명의 데이터를 어떻게 할 것인지에 대해서 고민이 많았다. 그냥 제외시켜버리기엔 다른 컬럼값들은 멀쩡했고, 그냥 포함시키기에는 근거가 부족했기 때문에 따로 분석을 통해서 가설을 세우고 근거를 찾았다. EDA는 처음이라 이런 데이터에 대해서 이런 접근을 하는 게 맞는지는 모르겠지만 이 경험을 통해서 조금 더 성장한 느낌이 들었다.

 

+ Recent posts