본문 바로가기
데이터 분석

학교알리미로 2021 전국 초등학교 입학생 수 그래프 그리기

by 너구리선생님 2022. 2. 19.
반응형

 원래 있던 학교에서 다른 학교로 옮기게 되었다.

 원래 있던 학교는 한 학년당 학급 수가 5개이며, 학급 당 학생 수는 약 20명이었다.

 새로 옮기는 학교는 한 학년당 학급 수가 8개이며, 학급 당 학생 수는 약 20명이었다.

 

 서울에서도 이렇게 초등학생 수가 차이가 큰데...

 2021년도 전국 초등학교 입학생 수는 어땠을까?

 

 학교알리미는 아래와 같이 다양한 공개용데이터를 제공하고 있다.

출처 : 학교알리미

 이 중 입학생 현황 카테고리를 선택하고 2021년도로 설정하여 csv파일을 내려받았다.

 

 전국 시도교육청별 총 입학생 수 그래프는 다음과 같이 나타났다.

경기도가 땅이 넓어서 그런가? 압도적인 1등!

 

 그래프를 그리기 위한 Python 코드는 아래와 같다.

import pandas as pd #데이터 프레임(표) 만들기
import matplotlib #한글 설정을 위한 rcParams를 쓰려고 가져옴
import matplotlib.pyplot as plt #그래프 그리기
import numpy as np #올림, 내림을 위해 가져옴

df_all = pd.read_csv("2021년도_입학생 현황.csv") #데이터 가져오기	
df_total_admission = df_all.groupby("시도교육청")["합계"].sum("합계") #전체 학생 입학수

matplotlib.rcParams["font.family"] = "Malgun Gothic" #한글 폰트 사용
matplotlib.rcParams["font.size"] = 15 #글자크기 15

graph_bar = plt.bar(df_total_admission.index, df_total_admission) #막대 그래프 그리기 / x축 시도교육청, y축 총 입학생 수
for idx, value in enumerate(graph_bar): #막대 그래프 위에 학생 수 표시하기
    plt.text(idx, value.get_height()+500, np.round(df_total_admission[idx]), ha="center")
plt.ylim(np.floor(min(df_total_admission)), np.ceil(max(df_total_admission))) #y축 범위 설정
plt.xticks(rotation = 90) #x축 범례들 90도 회전

 

그러면!!

전국 시도교육청별 한 학교당 입학생 평균은 어떨까?

세종이 2위라니..?!

 

 그래프를 그리기 위한 Python 코드는 아래와 같다. 위 코드와 살~짝 다르다!

import pandas as pd #데이터 프레임(표) 만들기
import matplotlib #한글 설정을 위한 rcParams를 쓰려고 가져옴
import matplotlib.pyplot as plt #그래프 그리기
import numpy as np #올림, 내림을 위해 가져옴

df_all = pd.read_csv("2021년도_입학생 현황.csv") #데이터 가져오기
df_mean_admission = df_all.groupby("시도교육청")["합계"].mean("합계") #시도교육청별 학교 입학생 평균

matplotlib.rcParams["font.family"] = "Malgun Gothic" #한글 폰트 사용
matplotlib.rcParams["font.size"] = 15 #글자크기 15

graph_bar = plt.bar(df_mean_admission.index, df_mean_admission) #막대 그래프 그리기 / x축 시도교육청, y축 학교별 입학생 수 평균
for idx, value in enumerate(graph_bar): #막대 그래프 위에 학생 수 평균 표시하기
    plt.text(idx, value.get_height(), np.round(df_mean_admission[idx]), ha="center")
plt.ylim(np.round(min(df_mean_admission), -1)-10, np.round(max(df_mean_admission), -1)) #y축 범위 설정
plt.xticks(rotation = 90) #x축 범례들 90도 회전

데이터를 활용해 시각화를 해보면...

예상치 못한 결과에 놀라는 경우가 있다.

 

총 입학생 수에서 압도적 1위인 경기도...! 그리고 2위는 서울인데, 3위부터는 고만고만하다는 거?!

학교별 입학생 평균은 서울 다음 세종이라니..?!

 

이래서 토의, 토론할 때 뇌피셜로 하면 안되는 듯...

반응형

댓글