프로그램
[파이썬] 문제 : csv 파일 읽어 numpy로 평균 계산
오디세이99
2022. 12. 2. 21:06
728x90
반응형
(문제)
'fake_student_records.csv' 파일은 가상의 학생들의 시험 성적을 기록한 파일이다. 아래 프로그램은 이 파일의 한 줄을 딕셔너리로 변환하여 콘솔에 출력하는 프로그램이다.
import csvwith open('fake_student_records.csv', mode='r', encoding='utf-8') as csv_file: csv_reader = csv.DictReader(csv_file) for row in csv_reader: print(row)
이 프로그램을 응용하여 학생들이 6 번 치룬 시험 결과를 2차원 numpy array로 변환한 후에 각 시험의 평균을 소숫점 첫째자리까지 콘솔에 출력하라.
정답은 다음과 같다.
[73.7 72.6 73.8 74.7 73.7 71.5 72.8 76.2]
fake_student_records.csv
0.00MB
(방법)
데이터의 average가 정답의 값과 다르네요.
제가 별도로 확인해 봐도 데이터의 average는 정확합니다.
문제에서는
[73.7 72.6 73.8 74.7 73.7 71.5 72.8 76.2]
로 했지만
결과는
[77.7, 73.2, 74.1, 72.3, 74.4, 74.2, 78.5, 75.5]
입니다.
확인을 해보셔야 할 것 같아요.
import csv
import numpy as np
with open('fake_student_records2.csv', mode='r', encoding='utf-8') as csv_file:
csv_reader = csv.DictReader(csv_file)
lst = []
for row in csv_reader:
# print(row)
tmp = [row['과제1'], row['과제2'], row['과제3'], row['과제4'], row['과제5'], row['과제6'], row['과제7'], row['과제8']]
tmp = list(map(int, tmp))
lst.append(tmp)
np_arr = np.array(lst) # 2차원 numpy array로 변화
avg = np.average(np_arr, axis=0) # 컬럼별 average
prt_lst = [round(a, 1) for a in avg.tolist()] # 결과avg 의 numpy array에서 리스트로 변환 후 소수점 1자리로 변환
print(prt_lst)
결과
[77.7, 73.2, 74.1, 72.3, 74.4, 74.2, 78.5, 75.5]
728x90
반응형