1. 程式人生 > 其它 >pandas速成筆記(5)-快速分析平均值、總和

pandas速成筆記(5)-快速分析平均值、總和

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

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

當然,這些在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