본문 바로가기
데이터 분석

2021학년도 전국 초등학교 전출입 학생 수 평균 그래프

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

위 데이터는 학교 알리미에서 가져왔습니다.

https://www.schoolinfo.go.kr/Main.do

 

학교알리미(초·중등 교육정보 공시서비스)

학교알리미_초·중등 교육정보 공시서비스

www.schoolinfo.go.kr


세종 놀라운걸?!

  지난 글에서 전국 초등학생 입학생 평균(시도교육청의 학교별 평균)을 보았을 때 서울 다음으로 세종이 높았다.

 그런데 전입생의 경우 세종이 압도적으로 높은 평균 전입생 수를 자랑하고 있다!

 세종... 대체 어떤 도시야..?

 

 그리고 서울은 전입생이 전출생보다 많을 것으로 생각했는데, 오히려 전출생이 더 많다는 것도 놀라웠음!


전체적인 파이썬 코드는 아래와 같다.

단, 아래 파이썬 코드는 반복문을 활용하면 더욱 깔끔하게 만들어질 수 있을듯!

1~6학년 그래프 그리기는 몇개의 값만 제외하고 반복되니!

import pandas as pd #데이터 프레임
import matplotlib.pyplot as plt #그래프 그리기
import matplotlib #한글 나타나도록
import numpy as np #array 생성

df_raw = pd.read_csv("2021년도_전·출입 및 학업중단 학생 수.csv") #데이터 가져오기
df_mean = df_raw.groupby("시도교육청").mean() #시도교육청별 평균 구하기

matplotlib.rcParams["font.family"] = "Malgun Gothic" #Malgun Gothic 폰트 활용
index = np.arange(df_mean.shape[0]) #전체 시도교육청 수

fig, axs = plt.subplots(2,3, figsize=(15, 15)) #다중 그래프 그리기, 2x3
w = 0.25 #막대그래프 굵기 및 다중그래프를 위함
fig.suptitle("2021년도 초등학생 전출입 학생 수") #전체 그래프 제목

#1학년
axs[0,0].bar(index-w, df_mean["1학년 전입학생수"], width = w, label = "전입생") #전입생 그래프
axs[0,0].bar(index, df_mean["1학년 전출학생수"], width = w, label = "전출생") #전출생 그래프
axs[0,0].set_xticks(index, df_mean.index, rotation = 90) #x축 90도 회전
axs[0,0].legend() #범례 보이게
axs[0,0].set_ylim(0,15) #y축 값 범위 설정
axs[0,0].set_title("1학년") #세부 그래프 제목

#2학년
axs[0,1].bar(index-w, df_mean["2학년 전입학생수"], width = w, label = "전입생")
axs[0,1].bar(index, df_mean["2학년 전출학생수"], width = w, label = "전출생")
axs[0,1].set_xticks(index, df_mean.index, rotation = 90)
axs[0,1].legend()
axs[0,1].set_ylim(0,15)
axs[0,1].set_title("2학년")

#3학년
axs[0,2].bar(index-w, df_mean["3학년 전입학생수"], width = w, label = "전입생")
axs[0,2].bar(index, df_mean["3학년 전출학생수"], width = w, label = "전출생")
axs[0,2].set_xticks(index, df_mean.index, rotation = 90)
axs[0,2].legend()
axs[0,2].set_ylim(0,15)
axs[0,2].set_title("3학년")

#4학년
axs[1,0].bar(index-w, df_mean["4학년 전입학생수"], width = w, label = "전입생")
axs[1,0].bar(index, df_mean["4학년 전출학생수"], width = w, label = "전출생")
axs[1,0].set_xticks(index, df_mean.index, rotation = 90)
axs[1,0].legend()
axs[1,0].set_ylim(0,15)
axs[1,0].set_title("4학년")

#5학년
axs[1,1].bar(index-w, df_mean["5학년 전입학생수"], width = w, label = "전입생")
axs[1,1].bar(index, df_mean["5학년 전출학생수"], width = w, label = "전출생")
axs[1,1].set_xticks(index, df_mean.index, rotation = 90)
axs[1,1].legend()
axs[1,1].set_ylim(0,15)
axs[1,1].set_title("5학년")

#6학년
axs[1,2].bar(index-w, df_mean["6학년 전입학생수"], width = w, label = "전입생")
axs[1,2].bar(index, df_mean["6학년 전출학생수"], width = w, label = "전출생")
axs[1,2].set_xticks(index, df_mean.index, rotation = 90)
axs[1,2].legend()
axs[1,2].set_ylim(0,15)
axs[1,2].set_title("6학년")

#마무리
fig.tight_layout()

#저장
fig.savefig("2021학년도 초등학생 전출입 학생 수.jpg")
반응형

댓글