반응형
위 데이터는 학교 알리미에서 가져왔습니다.
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")
반응형
'데이터 분석' 카테고리의 다른 글
워드클라우드 만들기 기초 활용! (0) | 2022.03.03 |
---|---|
2020년 서울 주거지, 수변부, 공원 모기지수 그래프로 나타내기 (2) | 2022.02.28 |
matplotlib 그래프 이미지가 잘린 상태로 저장될 때 (2) | 2022.02.23 |
학교알리미로 2021 전국 초등학교 입학생 수 그래프 그리기 (0) | 2022.02.19 |
서울 노원구 날씨 데이터와 그래프 만들기 (0) | 2022.02.14 |
댓글