Python 编程

综合实战:分析一份成绩单

10 分钟

毕业项目:给全班成绩做一次体检:把第二章的新装备全部用上——读文件、字符串处理、NumPy 统计、多图展示。任务设定:scores.csv 里存着全班成绩,每行是「姓名,语文,数学」,我们要算统计量、找出偏科生、画出全景图。

第一步:读进来并拆开

import numpy as np
names, yw, sx = [], [], []
for line in open('scores.csv'):
    n, a, b = line.strip().split(',')
    names.append(n); yw.append(float(a)); sx.append(float(b))
yw = np.array(yw); sx = np.array(sx)

strip 去掉行尾换行,split 按逗号拆开,float 把字符串变数字——第一章的文件加这一讲的字符串,第一环就通了。

第二步:算一算:yw.mean() 是语文平均;np.abs(yw - sx) 算每人两科差距,.argmax() 返回「最大值在哪个位置」的下标,names[i] 就是「最偏科的同学」。

第三步:画出来:subplots 开两个子图——左边 scatter(yw, sx) 看两科关系,右边 bar 画各科平均。偏离对角线最远的散点,正是偏科生。

收官的话:两章十八讲到此,从 print 到矩阵、从变量到类,读《动手学深度学习》的工具箱已经装满。翻开 d2l,从预备知识章正式出发吧。

常见误区:csv 第一行常是表头(姓名,语文,数学),直接 float 转换会炸——用 next(f) 跳过或加 if 判断。

练一练:真造一个五六行的 scores.csv,跑通这三步,把图拿给家里人讲讲你发现了什么。

小纸条

造一个 scores.csv,跑通「读文件→统计→画图」全流程

登录 后可看答案