Q.
파일명: a.txt
내용
이름,국어,영어,수학
aaa,43,54,65
bbb,7,67,87
ccc,54,65,76
a.txt 파일을 오픈하여 성적추출하기.
import numpy as np
#파일 내용을 한 줄 씩 읽음
f = open('./stu_data.txt', 'r')
datas = []
while True:
s = f.readline() # s: '1, aaa, 43, 65, 78 \n'
if s == '':
break
s = s.split('\n')[0] #엔터를 잘라냄 -> s: '1, aaa, 43, 465, 78'
stu = s.split(',') # stu: ['1', 'aaa', '43', '65', '78']
for i in range(0, 2):
stu.append(0)
datas.append(stu)
f.close()
datas
여기에서 s.split('\n')[0]는 \n을 기준으로 두 조각(예를들어, aaa,43,54,65\n 이 있다면 \n을 기준으로 앞과 뒤를 나누게 되어 두조각이 됌)에서 0번째 방에 해당하는 앞 조각만 사용하겠다는 뜻이다.
# datas리스트를 numpy 배열로 변환
arr = np.array(datas)
arr
# 각 학생의 이름만 추출
names = arr[:,0]
names
# 각 학생의 점수 추출
score = arr[:, 1:]
score
#점수 배열 요소 타입을 float으로 변경
x = arr[:, 1:]
score = x.astype(np.float32
score
#모든 줄의 총점, 평균 계산
'''
for i in score:
k = i[1:4] # k: [국,영,수]
sum1 = k.sum()
i[4]=sum1
i[5]=sum1/3
'''
score[:,4] = score[:,1:4].sum(axis=1) #axis=1 : 가로줄
score[:,5] = score[:,4]/3
score
print('각 학생의 총점,평균')
for i in range(0, 5):
print(names[i], end='\t')
print(score[i])
#학생들의 국어총점, 영어총점, 수학총점
'''
kor = score[:,1].sum(axis=0)
eng = score[:.2].sum(axis=0)
math = score[:,3].sum(axis=0)
'''
sums = score.sum(axis=0) #axis=0 : 세로줄
print('국어총점:', sums[1])
print('영어총점:', sums[2])
print('수학총점:', sums[3])
print('전체총점:', sums[4])
print('전체평균합:', sums[5])
'파이썬II' 카테고리의 다른 글
tkinter #계산기 만들기 (0) | 2021.07.08 |
---|---|
파이썬II #Web Data Read (0) | 2021.07.02 |
파이썬II # 공공데이터 분석(1) (0) | 2021.07.01 |