Pandas教学-1

发布时间:2026/9/15 9:11:52
Pandas教学-1
下面的几个案例从零开始、每个都自带生活化比喻适合课堂边讲边跑。案例一认识 DataFrame —— 一张带表头的Excel表格比喻DataFrame 就像全班同学的电子成绩单有列名表头和行每个同学每列还能有不同的类型姓名是文字、成绩是数字。importpandasaspd# 用字典创建成绩单键是列名值是整列数据dfpd.DataFrame({姓名:[小明,小红,小刚,小丽],语文:[92,85,78,95],数学:[88,96,71,90],是否及格:[True,True,True,True],})print(df)# 看整张表print(df[语文])# 抽出一列像撕下一竖条print(df.loc[2])# 抽出一行像撕下一横条讲解要点df[语文]拿到的是列返回 Series一条一维数据。df.loc[行号]拿到的是行用行列坐标思考就很好记。打印出来的表格自带索引0,1,2,3就像给行编了座位号。案例二条件筛选 —— “查分神器”比喻筛选就像老师说考及格的同学举手。df[条件]里放一个真/假的条件Pandas 会一行行地判断把答案为 True 的行留下来。# 继续使用 df找出语文超过 90 分的同学highdf[df[语文]90]print(high)# 只会显示 小明 和小丽# 找出数学在 80~90 之间的同学 表示并且记得加括号middf[(df[数学]80)(df[数学]90)]print(mid)讲解要点df[语文] 90的结果其实是一串 True/False像一张打勾名单。把它塞回df[...]里Pandas 只保留打了勾的行——这个套路是 Pandas 的灵魂操作。多个条件必须用并且或|或者不能写中文并且且每个条件都要加括号。案例三groupby 分组统计 —— 按班级分堆数人头比喻groupby就像运动会入场式——先按班级分成几堆人再对每一堆分别统计平均身高、人数、最高分……。# 一份销售小数据salespd.DataFrame({部门:[销售部,技术部,销售部,技术部,销售部],金额:[8000,12000,6000,20000,9500],})# 先按部门分组再算每组的平均金额print(sales.groupby(部门)[金额].mean())# 结果# 技术部 16000.0# 销售部 7833.33讲解要点口诀三步走先 groupby 分组 → 再选列 → 最后做统计mean/sum/count 等。结果里部门变成了索引而不是普通列这常让新手困惑可以顺带讲一下reset_index()把它变回普通列。案例四处理缺失值 —— 表格里的空白格子比喻真实数据就像收上来的问卷总有人没填。Pandas 把空缺记为NaNNot a Number。处理方法只有两条路要么删掉、要么填上。importnumpyasnp# np.nan 用来表示空缺dfpd.DataFrame({姓名:[小明,小红,小刚],成绩:[92,np.nan,78],# 小红那天缺考})print(df.isna())# 逐格检查哪里是空缺返回 True/Falseprint(df.dropna())# 删掉含空白的行小红被删了print(df.fillna(0))# 把空白填成 0比如按缺考 0 分算print(df[成绩].mean())# 注意mean() 会自动跳过 NaN算的是 92 和 78 的平均讲解要点isna()是一张体检报告表标出哪格是空的。dropna() 删行fillna(值) 填空是最高频的两个收尾动作。统计函数默认跳过 NaN这个默认行为很适合当成小考点提问。教学小建议案例一、二讲完可以让学生自己给成绩单加一列总分df[总分] df[语文] df[数学]练习效果很好。案例三、四建议用班级成绩.xlsx这类真实感数据学生更有代入感。每节课结尾抛一个如果……的问题比如语文和数学都在 85 分以上的人有几个考察筛选 len()需要的话我可以把这些案例整理成一份可直接打印的教案文档或者为每个案例配上出题与参考答案。