●CSV예제 파일을 다운받아 주세요
**입력하는 코드가 있는 파일과 같은 폴더에 위치해 있어야 합니다**
import csv
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
rc('font', family='Malgun Gothic')
f = open('school_2019.csv','r',encoding='utf-8')
lines = csv.reader(f)
header = next(lines)
#['지역', '학교명', '학급수', '학생수', '교사수']
schools = {}
for line in lines:
if ('광주' in line[0]) and ('마재' in line[1]) :
schools.update({'마재':[line[2], line[3], line[4]]})
#line[0]은 지역이고 line[1]은 학교명이다. 지역에 광주가 들어가고 학교명에 마재가 들어가면
#schools 딕셔너리에 키로는 마재를 값으로는 [line[2], line[3], line[4]]를 입력
if ('울산' in line[0]) and ('약사' in line[1]) :
schools.update({'약사':[line[2], line[3], line[4]]})
if ('용인' in line[0]) and ('정평' in line[1]) :
schools.update({'정평':[line[2], line[3], line[4]]})
if ('제주' in line[0]) and ('도평' in line[1]) :
schools.update({'도평':[line[2], line[3], line[4]]})
print(schools)
data = np.zeros((4,3), dtype='int32')
#0으로 초기화된 4행3열의 ndarray 배열 data를 만든다
school = list(schools.values())
#딕셔너리 schools의 값을 요소로한 리스트 school생성
for i in range(len(schools)) :
for j in range(3) :
data[i][j] = school[i][j]
#학급수,학생수,교사수 값이 들어있는 school의 각 요소의 값을 data의 해당 요소에 저장
print(data)
data = np.insert(data, 2, 0, axis=1)
#insert() 메소드를 이용하여 행을 기준으로 2번째 인덱스에 data에 0으로된 값 입력,한 학급당 학생수를 입력할 자리
data = np.insert(data, 4, 0, axis=1)
#insert() 메소드를 이용하여 행을 기준으로 4번째 인덱스에 data에 0으로된 값 입력,교사 1인당 학생수를 입력할 자리
print(data)
row = data.shape[0]
#ndarray의 shape 속성은 해당 배열에 대한 차원의 튜플 값을 가진다.
#따라서 튜플의 첫 번째 요소의 값이 되며, 이것은 배열의 전체 행의 개수를 의미
for i in range(row) :
data[i][2] = round(data[i][1]/data[i][0])
#한 학급당 학생수
data[i][4] = round(data[i][1]/data[i][3])
#교사 1인당 학생수
print(data)
xdata = ['마재', '약사', '정평', '도평']
# Matplotlib 패키지에서 사용되는 x축에서 사용될 데이터를 설정
#x축은 선정된 네 학교의 이름
plt.plot(xdata, data[:, 1], label='학생수', color='red', linestyle='--', marker='x')
plt.plot(xdata, data[:, 3], label='교사수', color='blue', linestyle=':', marker='d')
plt.title('마재/약사/정평/도평 초등학교 학생수와 교사수')
plt.legend(loc='best')
plt.savefig("plot0.png")
#첫 번째 선 그래프는 선정된 네 학교에 대해 학생 수와 교사 수를 비교함
plt.plot(xdata, data[:, 2], label='학급당 학생수', color='magenta', linestyle='-.', marker='o')
plt.plot(xdata, data[:, 4], label='교사 1인당 학생수', color='green', linestyle='--', marker='x')
plt.title('마재/약사/정평/도평 초등학교 학급당 학생수 및 교사 1인당 학생수')
plt.legend(loc='best')
plt.savefig("plot1.png")
#이 그래프는 네 학교에 대해 학급당 학생 수와 교사 1인당 학생 수를 나타냄
f.close()
{'마재': ['24', '481', '28'], '약사': ['29', '685', '33'], '정평': ['36', '945', '43'], '도평': ['14', '300', '17']}
[[ 24 481 28]
[ 29 685 33]
[ 36 945 43]
[ 14 300 17]]
[[ 24 481 0 28 0]
[ 29 685 0 33 0]
[ 36 945 0 43 0]
[ 14 300 0 17 0]]
[[ 24 481 20 28 17]
[ 29 685 24 33 21]
[ 36 945 26 43 22]
[ 14 300 21 17 18]]
출처: 예제 중심 파이썬 입문
궁금한 부분이 있으면 댓글 부탁드립니다^^
'• programming language > python' 카테고리의 다른 글
[파이썬 예제] Numpy 6- csv파일 읽고 리스트로 저장, 리스트를 ndarray에 저장 (0) | 2022.08.01 |
---|---|
[파이썬 예제] Numpy 5- csv파일 읽고 리스트로 저장 (0) | 2022.08.01 |
[파이썬 예제] Numpy 3- 최대 학급수/학생수/교사수 찾기 (0) | 2022.07.29 |
[파이썬 예제] Numpy 2- 최대 학급수/학생수/교사수 찾기 (0) | 2022.07.29 |
[파이썬 예제] Numpy 1- 최대 학급수/학생수/교사수 찾기 (0) | 2022.07.29 |