카테고리 없음
[파이썬] 문제 : 학색 과제의 평균 Chart
오디세이99
2022. 11. 1. 14:15
728x90
반응형
import csv
import matplotlib.pyplot as plt
calcu = {}
with open('fake_student_records.csv', mode='r', encoding='utf-8') as csv_file:
csv_reader = csv.DictReader(csv_file)
for row in csv_reader:
total = 0
hw_cnt = 0
for k in row.keys():
if '과제' in k:
row[k] = int(row[k])
total += row[k]
hw_cnt += 1
row['합계'] = total
row['평균'] = round(total / hw_cnt,2)
if row['학번'][:4] in calcu:
calcu[row['학번'][:4]] += 1
else:
calcu[row['학번'][:4]] = 1
# print(row)
ss = dict(sorted(calcu.items()))
plt.rcParams['font.family'] = 'NanumGothic'
plt.bar(list(ss), list(ss.values()))
plt.title('입학연도별 학생 수', fontsize=16)
plt.xlabel('연도', fontsize=12)
plt.ylabel('명', fontsize=12)
plt.xticks(list(ss), list(ss), fontsize=10)
plt.show()
결과
학생별 평균 출력
import csv
with open('fake_student_records.csv', mode='r', encoding='utf-8') as csv_file:
csv_reader = csv.DictReader(csv_file)
for row in csv_reader:
total = 0
hw_cnt = 0
tmp = [] # 과제 점수 보관용 임시 리스트 변수
for k in row.keys():
if '과제' in k:
row[k] = int(row[k])
total += row[k]
hw_cnt += 1
tmp.append(row[k]) # 과제점수 리스트에 추가
row['합계'] = total
row['평균'] = round(total / hw_cnt,2)
tmp.sort() # 과제점수 정렬
s_sum = sum(tmp[2:]) # 하위 점수 2개 제외해 3번쨰부터 점수 함계
s_avg = s_sum / len(tmp[2:]) # 합계를 과제수로 나누어 평균 계산
# print(row['학번'], c_sum, c_sum[2:], s_sum, s_avg) # 모니터링용 출력
print(f"[{row['이름']}] 평균 : {round(s_avg,2)}") # 학생별 평균 소수점 3자리에서 반올림(round)
결과
[이준범] 평균 : 91.67
[박승원] 평균 : 85.17
[박진현] 평균 : 86.5
[지윤찬] 평균 : 85.0
[이태빈] 평균 : 85.83
[김현우] 평균 : 70.33
[이재기] 평균 : 80.0
[유예윤] 평균 : 84.83
[정수훈] 평균 : 86.17
[장찬지] 평균 : 81.67
[정병혁] 평균 : 77.5
[정지빈] 평균 : 83.5
[정용진] 평균 : 75.67
[지동찬] 평균 : 80.5
[정동진] 평균 : 78.67
[김승우] 평균 : 82.0
[정원산] 평균 : 85.17
...
728x90
반응형