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

+ Recent posts