프로그램

[파이썬] 문제 : 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
반응형