Homework 0522 第一題

第一題:

從 moodle 讀進 scores.csv

計算每位學生總分、平均分數

根據總分計算排名

更新 DataFrame 新增三個欄位 (total, average, ranking)

輸出新的 csv 檔案 (new_scores.csv),按照學號順序排列

請輸出每一科平均分數、標準差與中位數

請輸出每一科及格人數百分比

範例輸出:

Chinese 60, 0, 60, 50%

English 60, 0, 60, 50%

Math 60, 0, 60, 50%

Physics 60, 0, 60, 50%

Chemical 60, 0, 60, 50%

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import pandas as pd

df_csv_utf8=pd.read_csv("scores.csv",encoding="utf8")
x=df_csv_utf8
column=["Chinese","English","Math","Physics","Chemical"]
x_average=x[column].mean()
x_median=x[column].median()
x_std=x[column].std()

for i in column:
average_above_60 = x[i] >= 60
num_students_above_60 = average_above_60.sum()
percent_students_above_60=num_students_above_60/len(x) *100
print(f"{i} {x_average[i]},{x_std[i]},{x_median[i]},{percent_students_above_60}%")

# 計算學生部分
x_students_average=x[column].mean(axis=1)
x_students_total=x[column].sum(axis=1)
x_students_ranking=x_students_average.rank(ascending=False).astype(int)

# 更新 DataFrame 新增三個欄位 (total, average, ranking)
df_csv_utf8['total']=x_students_total
df_csv_utf8['average']=x_students_average
df_csv_utf8['ranking']=x_students_ranking

# 輸出 csv
df_csv_utf8.to_csv("./41075018H_new_scores.csv", index=False, encoding="UTF8")
#print(df_csv_utf8)

f-string 技巧


作者: 微風