接上篇繼續,記得小時候讀書那會兒,還沒有雙減,每次考試完,大家最關心的就是全班的成績分布,假如有下面一張成績表:

老師們通常很快就會算出『平均分、總分』這些關鍵指標,然后各班之間,就開始攀比:

當然,這些在Excel里用SUM/AVERAGE函數,再結合自動填充很容易實現,pandas里要如何類似統計呢?
import pandas as pd
# 注意:先不要設置索引(否則最后append時會有問題)
score = pd.read_excel("./data/test.xlsx")
print(score)
# 把各科分數列先取出來
temp = score[['語文', '數學', '科學', '英語']]
print("\n--------各科分數--------")
print(temp)
# 原表上,新增總分、平均分列,並按行統計
score["總分"] = temp.sum(axis=1)
score["平均分"] = temp.mean(axis=1)
print("\n--------每行添加[總分,平均分]--------")
print(score)
# 按列計算平均分
col_avg = score[['語文', '數學', '科學', '英語', '總分', '平均分']].mean()
# 將得到的Serial追加到score表
score = score.append(col_avg, ignore_index=True)
print("\n--------最終結果-------")
print(score)
結果:
學號 語文 數學 科學 英語
0 張三 85 90 88 92
1 李四 78 86 90 82
2 王五 95 96 89 80
3 趙六 70 75 99 67
4 楊七 95 93 84 91
--------各科分數--------
語文 數學 科學 英語
0 85 90 88 92
1 78 86 90 82
2 95 96 89 80
3 70 75 99 67
4 95 93 84 91
--------每行添加[總分,平均分]--------
學號 語文 數學 科學 英語 總分 平均分
0 張三 85 90 88 92 355 88.75
1 李四 78 86 90 82 336 84.00
2 王五 95 96 89 80 360 90.00
3 趙六 70 75 99 67 311 77.75
4 楊七 95 93 84 91 363 90.75
--------最終結果-------
學號 語文 數學 科學 英語 總分 平均分
0 張三 85.0 90.0 88.0 92.0 355.0 88.75
1 李四 78.0 86.0 90.0 82.0 336.0 84.00
2 王五 95.0 96.0 89.0 80.0 360.0 90.00
3 趙六 70.0 75.0 99.0 67.0 311.0 77.75
4 楊七 95.0 93.0 84.0 91.0 363.0 90.75
5 NaN 84.6 88.0 90.0 82.4 345.0 86.25
