pandas速成筆記(5)-快速分析平均值、總和
阿新 • • 發佈:2022-03-20
接上篇繼續,記得小時候讀書那會兒,還沒有雙減,每次考試完,大家最關心的就是全班的成績分佈,假如有下面一張成績表:
老師們通常很快就會算出『平均分、總分』這些關鍵指標,然後各班之間,就開始攀比:
當然,這些在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