教案-第9章 数据分析基础(4学时)_第1页
教案-第9章 数据分析基础(4学时)_第2页
教案-第9章 数据分析基础(4学时)_第3页
教案-第9章 数据分析基础(4学时)_第4页
教案-第9章 数据分析基础(4学时)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ADDINCNKISM.UserStyle教案首页课序16学时2周次教学内容第9章数据分析基础(多维数组对象ndarray、数组运算)教学目标知识理解ndarray多维数组的概念、特点,明晰ndarray与Python原生列表的核心区别,掌握数组维度、形状、数据类型等基础属性;掌握5大核心知识点,包括ndarray对象创建方法、数组形状变换函数、常用自动生成数组函数、NumPy随机数函数、数组索引与切片规则;掌握一维二维数组索引切片逻辑,理解随机数种子作用,分清reshape、resize、flatten等形状变换函数的差异。能力能够独立编写代码,完成数组创建、形状修改、批量生成数组、生成随机数组、数组取值截取等实操操作;能够根据数据处理需求,选择合适的数组生成函数、形状变换方法,精准完成数组索引切片取值;具备利用ndarray数组完成简单批量数据处理的能力,为后续数据分析、矩阵运算、可视化处理奠定实操基础。素养培养学生结构化数据思维、逻辑编程思维,建立多维数据的认知框架;培养严谨的代码编写习惯、自主调试排错能力,提升自主探究、合作交流的学习素养。教学重点ndarray数组的创建方式及常用属性;数组形状变换核心方法(reshape、flatten、resize)的使用;常用自动生成数组函数(arange、linspace、zeros、ones)语法及应用场景;一维、二维数组的基础索引、切片操作。教学难点区分Python列表与ndarray数组的本质差异,理解数组同质化、连续存储特性;.数组形状变换时维度匹配规则,掌握reshape函数维度推算逻辑;二维数组切片语法、花式索引的使用技巧;.随机数函数参数含义及随机种子的固定作用。教学方法手段讲授法、案例演示法、任务驱动法、对比分析法教学组织方式内容导入知识讲解互动测验本节小结布置作业课后反思部分编程基础薄弱学生对二维切片、维度变换理解较慢;随机种子、维度匹配等难点容易混淆;课堂实操节奏把控需灵活调整。教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入展示学生考试成绩表、商品销量多维数据表,提出问题:Python列表处理大批量数值数据存在运算慢、维度混乱、无法矩阵运算等问题,引出NumPyndarray数组。内容讲解创建ndarray对象列表与ndarray数组核心区别对比维度listndarray数组数据类型可存放任意类型数据所有元素必须为同一数据类型内存存储内存分散,占用空间大内存连续,占用空间小运算速度批量数值运算速度慢向量化运算,速度极快维度结构维度不规整多维规整矩阵结构知识点讲解讲解np.array()创建数组语法,支持列表、元组转换数组;详解四大核心属性:ndim(维度)、shape(形状)、size(元素个数)、dtype(数据类型)。使用np.array()函数创建ndarray数组,支持传入列表、元组进行转换。使用前必须导入numpy库:importnumpyasnp。ndim:查看数组维度,一维数组为1,二维数组为2。shape:查看数组形状,返回元组;一维返回(元素个数,),二维返回(行数,列数)。size:查看数组中全部元素总个数。dtype:查看数组元素的数据类型,常见int、float。代码演示依次演示一维、二维数组创建,展示属性调用代码,讲解整型、浮点型数据类型转换方法。#导入库importnumpyasnp#1.创建一维数组arr1=np.array([10,20,30,40,50])#2.创建二维数组(学生成绩:3名学生,2门成绩)arr2=np.array([[88,90],[76,82],[92,85]])#查看属性print("一维数组维度:",arr1.ndim)print("二维数组形状:",arr2.shape)print("数组总元素个数:",arr2.size)print("数据类型:",arr2.dtype)易错提醒强调ndarray数组元素必须数据类型一致,与列表灵活存储不同,讲解类型自动转换规则。随堂任务:布置简单实操任务,创建学生成绩二维数组,打印数组维度和形状。(二)变换数组的形状1.知识点讲解数组形状变换不改变元素本身,只改变维度和排布方式,本节课要求掌握3个核心函数。(1)reshape()重塑形状(最常用)特点:不修改原数组,返回新数组;元素总个数必须保持不变。特殊用法:reshape(-1),-1代表自动推算维度,由程序自动计算行数或列数。(2)flatten()扁平化特点:将多维数组强制转为一维数组,常用于数据拉直处理。(3)resize()修改大小特点:直接修改原数组;可增加、减少元素,多余位置自动补0。重点拆解reshape维度变换规则,元素总个数必须保持不变;flatten扁平化降维;resize直接修改原数组大小,可增减元素。代码演示importnumpyasnp#创建一维数组arr=np.array([1,2,3,4,5,6])#1.reshape:一维转二维,2行3列arr1=arr.reshape(2,3)#2.自动推算维度:3行,列自动推算arr2=arr.reshape(3,-1)#3.flatten:二维转一维arr3=arr1.flatten()#4.resize:修改原数组为4行2列,多余补0arr.resize((4,2))print(arr)课堂提问:报错高频原因:reshape转换前后元素个数不一致,例如6个元素不能转为2行4列。提问:reshape(-1,2)代表什么?(三)自动生成数组1.知识点讲解在实际开发中,我们不需要手动输入大量数据,NumPy提供内置函数自动生成规整数组,4个高频函数必须熟记。(1)arange()等差数组语法:np.arange(起始值,终止值,步长);规则:左闭右开,不包含终止值。(2)linspace()均匀等分数组语法:np.linspace(起始值,终止值,元素个数);首尾数值全部保留,均匀切割。(3)zeros()全零数组语法:np.zeros((行数,列数)),常用于数据初始化、占位填充。(4)ones()全一数组语法:np.ones((行数,列数)),常用于矩阵权重初始化。重点对比arange与linspace的差异,前者控制步长、后者控制元素个数。案例演示importnumpyasnp#1.arange:0~20,步长2arr1=np.arange(0,20,2)#2.linspace:0~10,均匀生成5个数arr2=np.linspace(0,10,5)#3.3行4列全零数组arr3=np.zeros((3,4))#4.2行2列全一数组arr4=np.ones((2,2))print("等差数组:",arr1)print("均分数组:",arr2)重难点区分arange:控制步长,元素间隔固定;linspace:控制元素个数,间隔自动均分。(四)随机数函数1.知识点讲解数据分析、机器学习常需要模拟随机数据,numpy.random模块提供三类常用随机函数。(1)rand()均匀分布随机数生成0~1之间的随机小数,语法:np.random.rand(行数,列数)。(2)randint()随机整数生成指定区间整数,语法:np.random.randint(最小值,最大值,形状),左闭右开。(3)randn()正态分布随机数生成均值为0、方差为1的正态分布随机数,常用于算法模型初始化。(4)随机种子seed()2.难点重点设置随机种子后,每次运行生成的随机数完全一致,保证实验可复现;调试代码、教学实验必须使用。讲解np.random.seed()随机种子作用,固定随机数,保证实验可复现。3.案例实操生成0-1随机小数、指定区间随机整数、正态分布随机数组,模拟学生成绩、商品随机销量数据。拓展应用:说明随机数在数据抽样、模拟实验、机器学习初始化中的用途。(五)数组索引和切片1.知识点讲解遵循由浅入深逻辑,讲解一维数组索引切片(同列表)、二维数组索引切片(行+列取值)、简单花式索引。语法拆解:二维数组格式arr[行切片,列切片],讲解冒号切片规则、步长设置方法。案例演示以学生成绩二维数组为例,提取单科成绩、单个学生成绩、指定区间成绩,演示正负索引用法。易错强调区分数组切片与列表切片差异,提醒二维数组逗号分隔行列。小结知识复盘:用思维导图快速梳理5大模块核心知识点,提炼高频语法、易错点。综合案例:生成5行4列随机成绩数组,修改数组形状,提取前3行2列成绩数据。巡视指导:查看学生实操情况,针对性解答共性问题,集中讲解高频报错问题。布置作业布置课后作业:基础题巩固语法,提高题完成多维数组切片、随机数据筛选实操。预告下次课程:数组运算、数组去重、统计函数等知识点。开放答疑,记录学生共性问题,课后统一发布解答文档。课堂组织【教师活动】情景引入对比演示【学生活动】观察代码运行效果,对比列表与数组差异,思考列表数据处理痛点。记录本节课学习大纲,明确学习重难点。参与课堂提问,回答列表常用操作方法。ADDINCNKISM.UserStyle教案首页课序17学时2周次教学内容第9章数据分析基础(Pandas数据结构、数据选择和运算、数据清洗、聚合运算、数据读取和存储)教学目标知识掌握Pandas两大核心数据结构:Series、DataFrame的定义、创建与索引结构;熟练掌握数据选择、切片、行列操作、函数应用、排序统计等核心运算方法;理解数据清洗规则:重复值检测与删除、缺失值查找/删除/填充。掌握分组聚合groupby基本用法,学会文本/Excel数据的读取与存储;明晰Pandas索引的作用,区分显式索引与隐式索引。能力能够独立创建Series和DataFrame,完成结构化数据的定义与管理;具备数据筛选、切片、增删行列、数据运算、排序统计的实操能力;能够处理常见数据质量问题(重复值、缺失值),完成基础数据清洗;能够实现数据分组聚合分析,完成本地数据的读取与保存。素养培养学生结构化数据分析思维,建立表格型数据处理逻辑;养成严谨的数据处理习惯,提升数据预处理、数据分析职业素养。教学重点Series、DataFrame的创建与核心属性;多层索引的基本使;数据筛选:标签索引loc、位置索引iloc的使用;缺失值处理(isnull/fillna/dropna)、重复值处理(duplicated/drop_duplicates)。数据读取与存储:read_csv、to_excel、read_excel;分组聚合groupby+统计函数的基础用法。教学难点区分loc(标签)和iloc(位置)索引的使用场景;多层索引的取值与数据对齐规则;缺失值填充策略、分组聚合的分组逻辑与统计计算;数据运算中的广播机制与函数映射apply。教学方法手段讲授法:讲解Pandas数据结构、索引规则、清洗逻辑。案例驱动法:以学生成绩表、销售数据表为案例贯穿全课。对比教学法:对比Series与列表、DataFrame与Excel表格。实操演练法:课堂限时编码,教师实时纠错指导。教学组织方式内容导入知识讲解互动测验本节小结布置作业课后反思部分编程基础薄弱学生对二维切片、维度变换理解较慢;随机种子、维度匹配等难点容易混淆;课堂实操节奏把控需灵活调整。教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入NumPy适合数值计算,那表格型数据(Excel、成绩表、报表)该如何高效处理?二、内容讲解(一)Pandas数据结构1.知识点讲解Series:带索引的一维数组(数据+索引)。DataFrame:带行/列索引的二维表格(多列Series组合)。索引:显式索引(自定义标签)、隐式索引(默认0,1,2...)。Series:pd.Series(data,index=索引)DataFrame:pd.DataFrame(data,columns=列名,index=行索引)核心属性:shape、dtypes、index、columns、values代码演示importpandasaspdimportnumpyasnp#1.Series:带索引的一维数组(数据+索引)#自定义显式索引s=pd.Series([85,92,78,90],index=["张三","李四","王五","赵六"])print("===Series(一维带索引)===")print(s)print("显式索引:",s.index)print("隐式位置索引仍可用:第1个元素=",s.iloc[0])#2.DataFrame:带行/列索引的二维表格(多列Series组合)df=pd.DataFrame({"语文":[85,92,78,90],"数学":[88,76,85,92],"英语":[91,83,89,77]},index=["张三","李四","王五","赵六"])print("\n===DataFrame(二维表格)===")print(df)print("行索引(显式):",df.index.tolist())print("列索引:",df.columns.tolist())#3.隐式索引默认0,1,2...print("\n===隐式索引取值===")print("取第2行所有数据(隐式索引1):")print(df.iloc[1])课堂任务:创建个人信息Series、班级成绩DataFrame。(二)数据选择和运算1.知识讲解索引切片:列选择、行选择、loc(标签)、iloc(位置)。行列操作:增加行列、删除行列、修改数据。函数应用:apply()自定义函数映射。排序与统计:sort_values、sum/mean/max/describe。选列:df['列名']标签索引:df.loc[行标签,列标签]位置索引:df.iloc[行号,列号]代码演示importpandasaspdimportnumpyasnpnp.random.seed(10)#随机种子:固定随机数,可复现data=np.random.randint(0,100,(4,3))#随机整数:4行3列,0~99分rand_w=np.random.rand(4,1)#均匀分布随机小数rand_n=np.random.randn(4,1)#正态分布随机数df=pd.DataFrame(data,index=["张三","李四","王五","赵六"],columns=["语文","数学","英语"])print("=====原始成绩表=====")print(df)print("\n=====索引切片=====")print("选择数学列:\n",df["数学"])#列选择print("选择张三行:\n",df.loc["张三"])#loc标签行选择print("第1行第2列:",df.iloc[0,1])#iloc位置索引df["总分"]=df["语文"]+df["数学"]+df["英语"]#增加列df.loc["张三"]=[90,85,95,270]#修改数据df_drop=df.drop(columns=["英语"])#删除列print("\n=====行列操作后=====")print(df_drop)defgrade(score):return"优秀"ifscore>=240else"及格"df["等级"]=df["总分"].apply(grade)print("\n=====函数处理后=====")print(df)df_sort=df.sort_values(by="总分",ascending=False)#排序print("\n=====排序后=====")print(df_sort)print("\n=====统计信息=====")print("平均分:\n",df.mean())print("描述统计:\n",df.describe())(三)数据清洗(1.重点讲解重复值:df.duplicated()、df.drop_duplicates()缺失值:df.isnull()、df.dropna()、df.fillna(值/均值)代码演示构造含重复值、缺失值的成绩表,完成清洗。#==================1.导入必备库==================importpandasaspdimportnumpyasnpnp.random.seed(10)score_data=np.random.randint(0,100,(4,3))uni_data=np.random.rand(4,1)norm_data=np.random.randn(4,1)df=pd.DataFrame(score_data,index=["张三","李四","王五","赵六"],columns=["语文","数学","英语"])df_dirty=df.copy()df_dirty.loc["李四"]=df_dirty.loc["张三"]#制造重复行(李四=张三)df_dirty.loc["赵六","数学"]=np.nan#制造缺失值(数学为空)df_dirty.loc["钱七"]=[np.nan,65,np.nan]#新增一行全是缺失值print("=====原始脏数据(含重复+缺失)=====")print(df_dirty)print("\n=====检测重复行=====")print(df_dirty.duplicated())df_clean=df_dirty.drop_duplicates()#删除重复print("\n=====检测缺失值数量=====")print(df_clean.isnull().sum())df_clean=df_clean.dropna(how="all")#删除全空行df_clean["数学"]=df_clean["数学"].fillna(df_clean["数学"].mean())#均值填充df_clean["语文"]=df_clean["语文"].fillna(0)#用0填充print("\n=====数据清洗完成=====")print(df_clean)强调:数据分析80%工作量是数据清洗,是必备核心技能。代码演示np.random.seed(10)score=np.random.randint(50,101,size=(4,2))uni_rand=np.random.rand(4,1)norm_rand=np.random.randn(4,1)df=pd.DataFrame({"班级":["一班","一班","二班","二班"],"语文":score[:,0],"数学":score[:,1]})print("=====原始班级成绩表=====")print(df)#按【班级】分组,对【语文、数学】进行统计group_df=df.groupby("班级")[["语文","数学"]]print("\n=====分组统计结果=====")print("1.平均分mean():\n",group_df.mean())print("\n2.总分sum():\n",group_df.sum())print("\n3.人数count():\n",group_df.count())print("\n4.最高分max():\n",group_df.max())print("\n5.最低分min():\n",group_df.min())聚合运算重点讲解groupby(列名)[统计列].mean()支持:mean/sum/count/max/min代码演示group=df.groupby("班级")[["语文","数学"]]print("\n=====分组统计结果=====")print("平均分mean():\n",group.mean())print("\n总分sum():\n",group.sum())print("\n人数count():\n",group.count())print("\n最高分max():\n",group.max())print("\n最低分min():\n",group.min())(五)数据读取和存储1.重点讲解文本数据:read_csv()读取、to_csv()保存。Excel数据:read_excel()读取、to_excel()保存。2.代码演示#随机种子:固定随机数,实验可复现,必须写在随机函数前面np.random.seed(2026)#(1)rand():生成0~1之间均匀分布随机小数3行2列arr_rand=np.random.rand(3,2)print("=====rand()0~1均匀随机小数=====")print(arr_rand)#(2)randint():生成指定区间随机整数左闭右开[50,100),4行3列arr_randint=np.random.randint(5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论