pandas速成笔记(5)-快速分析平均值、总和

2022-04-27 10:54:18 浏览数 (1)

接上篇继续,记得小时候读书那会儿,还没有双减,每次考试完,大家最关心的就是全班的成绩分布,假如有下面一张成绩表:

老师们通常很快就会算出『平均分、总分』这些关键指标,然后各班之间,就开始攀比:

当然,这些在Excel里用SUM/AVERAGE函数,再结合自动填充很容易实现,pandas里要如何类似统计呢?

代码语言:javascript复制
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)

结果:

代码语言:javascript复制
   学号  语文  数学  科学  英语
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

0 人点赞