Python程序设计 教案全套 李树青_第1页
Python程序设计 教案全套 李树青_第2页
Python程序设计 教案全套 李树青_第3页
Python程序设计 教案全套 李树青_第4页
Python程序设计 教案全套 李树青_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

教案—学年第学期院(系、所、部)教研室课程名称授课对象授课教师职称职务教材名称Python程序设计

课程教案负责人:主讲人:授课题目(教学章、节或主题):1Python基础1.1Python环境安装与使用1.2代码入门1.3运行与调试2Python语言编程(结合案例讲解)2.1数据类型2.2控制语句授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过第一章的Python基础课程学习,直观地理解Python也是一种计算机编程语言,使得学生能够理解Python的编程模式,明确教学安排与方法、目标和要求、学习方法、参考书,培养学生数据计算思维能力和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):教学重点:Python对象模型,Python变量,Python自动内存管理功能,数字、字符串基本知识,Python运算符与表达式,常用Python内置函数,基本输入输出,Python模块的导入与使用。教学难点:变量类型不需要提前说明,并且可以随时动态改变;Python中一切都是对象,包括函数也是对象。主要讲解内容:为什么称为计算机编程语言?以此来介绍计算机语言的含义,并说明Python语言的特点。强调Python的优势(数据分析、人工智能、可视化等)关于开发环境的安装Python安装其他IDE的安装在进行代码介绍时,可以介绍下基本的print和input函数的使用,实现比如对输入的正数以负数输出、大写字母以小写字母输出,强调基本函数和字符串自带函数的使用。介绍四种主要数据类型。整数强调常见数学运算符的使用,进制是难点布尔型强调大小写产量表示,不是重点浮点型强调精度问题字符串为重点内容,强调单引号双引号、转义字符。介绍数据类型的常见转换以案例来讲解几种常见控制语句的写法:判断成绩讲解条件分支语句素数练习讲解循环语句教学活动组织设计:学导式教学法、混合式,并通过以下几个问题进行引导式讲解:课后任务:1)大家从网上了解并学习另外一种Python的代码编辑器(IDE)建议了解IDLE、Spyder和Jupyter2)编写Python代码,输出“你好,中国!”让大家自行查阅网络资源,实现对输入字符串的首字母大写输出。慕课《小白学Python》可以看到1.1——1.4

课程教案负责人:主讲人:授课题目(教学章、节或主题):2Python语言编程(结合案例讲解)2.1数据类型2.2控制语句授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过第二章的数据类型和控制语句学习,熟悉编程语言开发的基本方法和流程,掌握Python的语法习惯和编程风格,并能熟练应用完成常见代码开发任务。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):主要介绍内容:1)说明变量名称的规范、大小写、中文问题2)结合字符输入转换为整数,介绍整数变量、字符串变量及其函数的一般使用。3)介绍四种主要数据类型。a)整数强调常见数学运算符的使用,进制是难点b)布尔型强调大小写产量表示,不是重点c)浮点型强调精度问题d)字符串为重点内容,强调单引号双引号、转义字符。4)介绍数据类型的常见转换编程案例:1)慕课《小白学Python》可以看到2.1——2.5,学有余力的同学可以看2.72)完成慕课《小白学Python》测试13)书后练习课后8、9两道,其他练习根据情况自己选择掌握a)允许用户输入两个整数相乘的内容,如输入“2x3”,并最终能输出“2x3=6”(数值任意,x为小写)sum=input()#输入v1,v2=sum.split("x")#按照x字符分隔前后的两个数字a=int(v1)#转换整数b=int(v2)#转换整数c=a*b#相乘print(sum+'='+str(c))#完成格式化输出(方法1)print('{}={}'.format(sum,str(c)))#完成格式化输出(方法2)b)允许用户输入两个向量,每个向量各有3个元素,最终可以计算两个向量的余弦夹角参考代码1:v11=1v12=2v13=3v21=2v22=3v23=1fenzi=v11*v21+v12*v22+v13*v23#分子fenmu=(v11**2+v12**2+v13**2)**0.5*(v21**2+v22**2+v23**2)**0.5#分母print(fenzi/fenmu)参考代码2:importmathv11=1v12=2v13=3v21=2v22=3v23=1fenzi=v11*v21+v12*v22+v13*v23#分子fenmu=math.sqrt(math.pow(v11,2)+math.pow(v12,2)+math.pow(v13,2))*math.sqrt(math.pow(v21,2)+math.pow(v22,2)+math.pow(v23,2))#分母print(fenzi/fenmu)教学活动组织设计:学导式教学法、混合式,并通过具体案例进行引导式讲解:课后任务:1)慕课《小白学Python》可以看到2.1——2.5和3.1——3.5。尤其是编程基础不扎实的同学课外一定要安排学习时间。2)允许用户输入两个姓名,通过分别计算姓名每个对应字符编码差值的绝对值之和再允许用户输入两个姓名,通过分别计算姓名每个对应字符编码差值的绝对值之和再求平均值,来表达两个姓名的远近。用户姓名可以为任意多个字(只考虑相同长度的姓名比较)name1=input()name2=input()count=len(name1)sum=0foriinrange(count):sum+=abs(ord(name1[i])-ord(name2[i]))print(sum/count)第二次课(实验课,难度和内容可以自己酌情选择和修改)(该练习为下节课控制语句的内容做准备,需要学习完数据类型转换才能完成):1)打印下面的乘法口诀表1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*6=36 6*7=42 6*8=48 6*9=54 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=81参考代码:foriinrange(1,10): print('\t\t'*(i-1),end='') forjinrange(i,10): print('{}*{}={}\t'.format(i,j,i*j),end='') print()2)货币记账,不断输入各种币值的金额,不同的币种使用不同的字母前缀表示,一旦输入0结束输入,并输出汇总的各个币种总金额(为简单处理,可以只考虑美元和人民币)。输入为:$100Y200$150Y-1000输出为:记账结束,美元为250,人民币为100参考代码:dollar=0yuan=0whileTrue:amount=input()ifamount=='0':print('记账结束,美元为%d,人民币为%d'%(dollar,yuan))breaksign=amount[0]amount=int(amount[1:])ifsign=='$':dollar+=amountelifsign=='Y':yuan+=amount

课程教案负责人:主讲人:授课题目(教学章、节或主题):2Python语言编程(结合案例讲解)2.3函数2.4模块(重点讲解包、第三方模块导入等)授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过Python语言编程学习,明确Python的结合函数定义,结合包、模块介绍第三方导入方法,着重培养学生抽象分析问题和设计算法、编程实现解决问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):主要讲解内容:1)结合函数定义再次强调函数封装的意义2)介绍Python函数的定义方法和使用方法3)介绍参数(强调形参改变不影响实参)和返回值的意义,并说明定义方法4)介绍默认值参数、关键字参数(位置参数)、列表参数5)介绍函数变量作用域和gloabl变量6)特殊的函数定义和使用7)结合包、模块介绍第三方导入方法教学活动组织设计:学导式教学法、混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:慕课《小白学Python》可以看慕课第四章。定义一个函数,使该函数能够与平均值最接近的一个数,如:arrays=[0,1,2,3,4,5,10,15]print(getAvgNearest(arrays))输出为:5课程教案负责人:主讲人:授课题目(教学章、节或主题):1.实验课1)输出指定行数的星号三角形2)输出指定范围内的素数3)猜数字授课时间授课类型(教学课型):□理论课实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过实践课程,熟练掌握Python分支结构、循环结构、函数设计以及类的设计与使用重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):主要讲解内容:输入字符串,大写和小写连接后输出输入两个整数,输出两数之和单利计算单利计算:允许用户输入本金、年期和年利率三个数,并计算最终的本息和。如输入1万元本金,三年期的年利率为2.75%,则最终输出:10825.0复利计算复利计算:允许用户相同的上述信息,但是允许利滚利,如果有1万元的本金,年利率为5%(日利率可以除以360),如果该本金存储30天,最终计算结果为:10041.750687580625教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:(1)在购房等商业行为中,常常需要使用按揭贷款。按揭贷款的计算方法也有很多,常见的有等额本息还款法、等额本金还款法等。等额本息还款法把贷款本金总额与利息总额相加,平均分摊到还款期限每个月中,每月还款额固定,但每月还款额中本金比重逐月递增、利息比重逐月递减。计算方法为:大家尝试使用Python来完成下面的练习:如果有100万元的贷款金额,贷款期限10年(120个月),贷款年利率为4.9%,按照等额本息还款计算的每月还款额为多少?

课程教案负责人:主讲人:授课题目(教学章、节或主题):3组合数据3.1列表(重点)3.2元组3.3字典(重点)3.4集合授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过对Python的组合数据类型的学习,熟练运用Python列表、元组、字典、集合等基本数据类型以及相关列表推导式、切片等特性来解决实际问题。重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):3.1列表教学重点:列表对象的创建与删除,列表元素的增加与删除,列表元素访问与计数,有序序列的双向索引,成员资格判断运算符in,切片操作,列表排序,列表推导式。教学难点:Python自动内存管理,切片操作与浅复制,列表推导式。3.2元组教学重点:元组对象的创建与删除,元组与列表的区别,序列解包,生成器推导式。教学难点:元组与列表的区别,元组的不可变本质,序列解包,生成器与列表推导式的效率比较。3.3字典教学重点:字典对象的创建与删除,字典元素的读取,字典元素的添加与修改,有序字典对象的使用,使用字典来计数。教学难点:字典对象的get()方法,访问字典对象时可以使用“键”作为下标。3.4集合教学重点:集合对象的创建与删除,集合的并、交、差以及对称差等运算,使用集合来提取序列中的唯一元素。教学难点:Python运算符的多重含义。主要讲解内容:1)组合数据(列表和字典是重点)2)重点内容:a) 切片b) 字典的更新如:data['age']=17强调没有该键,则新建元素,有该键,则更新该元素教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。《小白学Python》慕课第六章,同步学习。课后任务:1)使用二维列表表示矩阵,完成矩阵相乘的计算2)观察下面代码输出,并说明原因num=[8,19,27,87]print(num[2])print(num[2:-1])print(num[2::2])print(num[2:3])print(num[-2:-1])print(num[-2::2])

课程教案负责人:主讲人:授课题目(教学章、节或主题):3组合数据3.5字符串(切片、函数、分词、正则表达式)授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过Python的字符串,熟练使用正则表达式处理字符串,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):主要讲解内容:3.5字符串教学重点:字符串编码,字符串格式化,find()、index()、split()、join()、replace()、translate()、strip()、startswith()、endswith()、center()、ljust()、rjust()等字符串常用方法,字符串常量,可变字符串。正则表达式教学重点:正则表达式元字符,re模块常用方法,正则表达式对象,正则表达式子模式扩展语法。教学难点:正则表达式子模块扩展语法。教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:巩固练习课堂中的字符串find()、index()、split()、join()、replace()、translate()、strip()、startswith()、endswith()、center()、ljust()、rjust()等字符串常用方法。

课程教案负责人:主讲人:授课题目(教学章、节或主题):实验课:1)移动加权预测(根据月份销售额预测未来的销售额)2)使用函数封装数列输入和预测等功能实现不断输入不断预测的效果3)阶段机试1授课时间授课类型(教学课型):□理论课实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过实践课程,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):1)删除出现在其他列表的列表元素:vector1=[1,2,6,5,3,4]vector2=[2,3,4]indexes=[]foriinrange(len(vector1)):ifvector1[i]invector2:indexes.append(i)foriinrange(len(indexes)-1,-1,-1):vector1.pop(indexes[i])print(vector1)————————vector1=[1,2,6,5,3,4]vector2=[2,3,4]foriinrange(len(vector1)-1,-1,-1):ifvector1[i]invector2:vector1.pop(i)print(vector1)编写代码,让用户输入多个英文单词,直到输入空字符串时结束(此题为二级常见的编程题考法)对输入的所有单词进行分组,分别统计以不同字母结尾的单词分别有哪些?比如输入:nanjingSHANGhai输出为(注意大小写和单词前后的空格):{'n':['nan'],'g':['jing','shang'],'i':['hai']}3)编写代码,能将英语单词句子中所有含有n字母2次及以上的单词抽取出来,并排序后重新组成新的句子比如有句子“NanjingUniversityofFinanceandEconomics,SchoolofInformationEngineering”输出为:EngineeringFinanceInformationNanjing教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:1)慕课《小白学Python》可以看慕课第六章。2)矩阵相乘matrix1=[[1,2,3],[2,3,4]]matrix2=[[2,3],[3,4],[4,5]]matrix3=[[0,0],[0,0]]

课程教案负责人:主讲人:授课题目(教学章、节或主题):3组合数据3.6时间类型(时间元组、时间戳、时间字符串转换)授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过python的时间类型课程,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):重点讲解:获取当前时间;不同类型的时间转换;不同单位的时间转换;不同格式的时间转换教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:1)慕课《小白学Python》可以看慕课5.3、5.4和6.3、6.4。2)数据透视显示,如有二维数据为:[['张三','语文',80],['张三','数学',94],['李四','语文',79],['李四','英语',99],['王二','数学',81]]输出为:李四张三王二英语99语文7980数学9481

课程教案负责人:主讲人:授课题目(教学章、节或主题):3组合数据3.7numpy序列数据处理授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过python的numpy序列数据处理,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):教学重点:numpy模块的安装与使用,数据与标量数值的计算,数据与数组的算数运算,数组转置,向量内积,数组元素访问,矩阵不同维度上的求和与均值计算以及最大值、最小值的查找,标准差与方差计算,数组切片与布尔运算,加权平均值的计算。教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:慕课《小白学Python》完成到第六章测试4的所有测试练习。2)用随机函数生成一个句子,包含5到10个由随机字母组成的单词,这些单词并不具有真实的语义,长度要求在2到6个字符之间importrandomwords=[]foriinrange(5,10):word=''forjinrange(2,random.randint(4,8)):word+=chr(random.randint(65,90))words.append(word)print(''.join(words))3)结合大段文本,去除停用词后,将剩余词语以词云展示.importjiebaimportwordcloudimportmatplotlib.pyplotaspltwithopen('sentences.txt',encoding='UTF-8')asf1:words=f1.read()stoplist=[]withopen('stoplist.txt',encoding='UTF-8')asf2:whileTrue:line=f2.readline().strip()ifnotline:breakstoplist.append(line)words=jieba.lcut(words)print(words)forwordinwords:ifwordinstoplist:words.remove(word)words=''.join(words)img=plt.imread('heart.jpg')#加载图片wc=wordcloud.WordCloud(background_color='white',font_path="msyh.ttc",mask=img)#设置生成图片的形状wc.generate(words)wc.to_file("img.png")

课程教案负责人:主讲人:授课题目(教学章、节或主题):实验序列数据分析1.输出成绩及格的数据实验2列表的平方累加实验3矩阵计算实验4词语统计实验5列表排序实验6复合元素序列的排序授课时间授课类型(教学课型):□理论课实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过实践课程,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):字典和字符串处理练习:1)编写代码,让用户输入多个英文单词,直到输入空字符串时结束。对输入所有单词分组,分别统计以不同字母结尾的单词分别有哪些?能将英语单词句子中所有含有n字母2次及以上的单词抽取出来,并排序后重新组成新的句子教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:1)编写代码,让用户输入多个英文单词,直到输入空字符串时结束对输入的所有单词进行分组,分别统计以不同字母结尾的单词分别有哪些?比如输入nanjingSHANGhai输出为(注意大小写和单词前后的空格)(点击代码可复制)['n':['nan'],'g':[jing','shang'l,"i':['hai])2)编写代码,能将英语单词句子中所有含有n字母2次及以上的单词抽取出来,并排序后重新组成新的句子。比如有句子“NanjingUniversityofFinanceandEconomics,SchoolofInformationEngineering”,输出为:EngineeringFinancenformationNanjing课程教案负责人:主讲人:授课题目(教学章、节或主题):4数据文件处理4.1文件访问4.2第三方模块的文件访问(numpy、pandas)授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过数据文件处理,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):文件基本操作的教学重点:文本文件与二进制文件的区别,open()方法以及flush()、close()、read()、write()等文件对象常用方法。教学难点:文件操作三步骤:打开文件、操作文件、关闭文件。文本文件基本操作的教学重点:read()、write()、seek()等文件对象常用方法的运用。教学难点:Python2.x和Python3.x的区别。二进制文件操作的教学重点:二进制文件读写方式,序列化模块pickle与struct。教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:找到多行文本文件中出现频次最高的词语如words.txt文件中有:tobeornottobetobeornottobetobeornottobenotbetobetobe参考答案1:lines=[]withopen('words.txt')asf:whileTrue:line=f.readline().strip()ifline=='':breaklines.append(line)dict1={}forlineinlines:words=line.split()forwordinwords:dict1[word]=dict1.get(word,0)+1max=0maxWord=''forunitindict1:ifmax<dict1[unit]:max=dict1[unit]maxWord=unitprint(maxWord)参考答案2:lines=[]withopen('words.txt')asf:whileTrue:line=f.readline().strip()ifline=='':breaklines.append(line)dict1={}forlineinlines:words=line.split()forwordinwords:dict1[word]=dict1.get(word,0)+1print(max(dict1,key=lambdax:dict1[x]))参考答案3:lines=[]withopen('words.txt')asf:whileTrue:line=f.readline().strip()ifline=='':breakforlineinline.split():lines.append(line)print(max(set(lines),key=lines.count))

课程教案负责人:主讲人:授课题目(教学章、节或主题):5数据查询5.1数据建立5.2数据选择5.3数据显示5.4数据更新授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过数据查询,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):1)结合pandas介绍DataFrame的基本操作,包括数据建立、数据选择、数据显示、数据更新等。2)结合股市数据、图书借阅数据等数据以案例介绍各种常见数据查询方法。教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:慕课《Python大数据分析》完成第二章测试练习。十年的某图书馆读者借阅记录,有读者号(uid)、图书号(bid)、图书标题(title)和借阅日期(date)四个列。下载地址为:/python/mooc2-data/2/lending.zip练习:a)查询《人间词话》的借阅情况b)查询2016年的借阅情况c)查询1084420用户在2016年的借阅情况d)查询2016、2018和2019年的借阅情况e)查询借阅了1103310所借图书的用户参考答案:查询《人间词话》的借阅情况importpandasaspdrecords=pd.read_csv('c:\\temp\\lending.dat')print(records[records['title']=='人间词话'])print(records.loc[records['title']=='人间词话'])print(records[records['title']=='人间词话']['uid'])print(records[records['title']=='人间词话'][['uid','date']])查询2016年的借阅情况importpandasaspdrecords=pd.read_csv('c:\\temp\\lending.dat')records['newDate']=pd.to_datetime(records['date'])print(records[records['date'].str[0:4]=='2016'])importpandasaspdrecords=pd.read_csv('c:\\temp\\lending.dat')records['newDate']=pd.to_datetime(records['date'])print(records[records['newDate'].dt.year==2016])查询1084420用户在2016年的借阅情况importpandasaspdrecords=pd.read_csv('c:\\temp\\lending.dat')records['newDate']=pd.to_datetime(records['date'])print(records[(records['date'].str[0:4]=='2016')&(records['uid']==1084420)])查询2016、2018和2019年的借阅情况importpandasaspdrecords=pd.read_csv('c:\\temp\\lending.dat')records['newDate']=pd.to_datetime(records['date'])print(records[records['newDate'].dt.year.isin([2016,2018,2019])])查询借阅了1103310所借图书的用户importpandasaspdrecords=pd.read_csv('c:\\temp\\lending.dat')records['newDate']=pd.to_datetime(records['date'])bid=records[records['uid']==1103310]['bid']#print(bid.tolist())print(records[records['bid'].isin(bid.tolist())])

课程教案负责人:主讲人:授课题目(教学章、节或主题):实验:股票数据获取查询股票收盘价利用股票收盘价和开盘价计算盈利额授课时间授课类型(教学课型):□理论课实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过实验课,着重培养学生抽象分析问题和设计算法、编程实现解决问题的能力。重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):常见的数据文件有两类:一类是文本文件,一类是非文本文件。对于文本文件,格式通用,读取相对简单,而对于非文本文件,主要是指此类文件需要借助于特殊的应用程序才能读取,比如图片文件需要图片浏览器才能打开等,其中特定的图片文件,比如Photoshop存储的专有图片格式文件只能使用Photoshop才能打开等等。1.不同格式的数据文件读取(1)文本文件一般的文本文件都使用txt表达文件扩展名,在Windows系统中可以使用记事本、写字板等自带程序打开。对于较大的数据文件,建议读者使用Editplus或者Sublime来打开,其中后者不仅免费而且功能专业强大。但是,并非所有文本文件都是txt扩展名,尤其是数据文件,扩展名往往是dat、csv等其他名称。这些文本文件往往都是以行为单位来存储数据,每一行通过分隔符分隔若干列,表示不同的数据,分隔符可能为空格、Tab或者逗号等。因此在读取文本文件时,通常需要设定正确的分隔符。如读取txtdata1.csv(可以在教学资源中下载):importpandasaspddata=pd.read_csv('txtdata1.csv')print(data)这个文件使用标准的逗号分隔符,第一行是标题行。同时,为演示该代码需要将数据文件放置到当前项目中,或者修改此处代码,标明正确的数据文件完整路径。再如读取txtdata2.csv(可以在教学资源中下载),由于该文件使用Tab占位符分隔,如果直接读取将无法解析出每一列,此时可以通过sep属性设置分隔符:importpandasaspddata=pd.read_csv('txtdata2.csv',sep='\t')print(data)对于不含标题行的数据文件,默认会将第一行数据作为列标题,因此还需指定是否有标题行来正确读取数据:importpandasaspddata=pd.read_csv('txtdata3.csv',header=None)print(data)此时默认的列名将使用数字序号来标注。header属性为None表示没有标题行。对于含有中文的文本文件,在Python中通常都需要设置字符集才能正确读取。如读取txtdata3.csv(可以在教学资源中下载)importpandasaspddata=pd.read_csv('txtdata4.csv',encoding='GBK')print(data)encoding参数的取值并非一定是GBK,需要根据所在操作系统进行选择,一般为“UTF-8”、“GBK”、“GB2312”等。(2)非文本文件对于数据文件而言,常见的非文本文件主要有Excel等格式。本节主要以Excel文件为例来说明。pandas读取以“xls”为扩展名的Excel文件需要安装xlrd模块,因此需要在进行正式读取前安装好。importpandasaspddata=pd.read_excel('txtdata5.xls')print(data)对于“xlsx”新的Excel文件类型,则需要再安装openpyxl模块,并在读取文件时设定使用该模块读取:importpandasaspddata=pd.read_excel('txtdata6.xlsx',engine='openpyxl')print(data)不同于一般的文本文件,Excel数据文件往往含有多个工作表(sheet)数据。因此还需要指定具体的工作表号:importpandasaspddata=pd.read_excel('txtdata7.xls',sheet_name='txtdata2')print(data)2.大数据文件的读取对于较大规模的数据文件,直接读取往往存在着性能问题。比如有ratings.csv,两千多万行记录,直接读取速度明显变慢。解决方法有以下几种:1)读取部分记录虽然数据记录很多,但是可以读取指定行数。比如通过在读取时增加nrows设定读取行数:importpandasaspddata=pd.read_csv('ratings.csv',nrows=5)print(data)2)分块读取行通常对于此类文件的读取,可以考虑使用分块的读取方法,比如一次只读取一部分,多次读取即可完成全部数据读取。importpandasaspddatas=pd.read_csv('ratings.csv',chunksize=1000000)fordataindatas:print(data)chunksize属性可以设定一次读取的行数,每次读取一百万行。读取过来的变量可按序获取每个DataFrame元素,此时既可以分开处理,也可以按照需要选择所需记录进行处理。3)读取指定列并非所有数据列都需要读取并计算,因此可以设定usecols属性来选择指定列:importpandasaspddata=pd.read_csv('ratings.csv',usecols=['userId','rating'])print(data)3.数据文件的写入在数据分析中,数据文件的写入并非必须,主要用于保存中间计算结果。比如读取txtdata1.csv文件数据后,将Risk列为1的所有数据保存到新的Risk1.csv文件中:importpandasaspddata=pd.read_csv('txtdata1.csv')data[data['Risk']==1].to_csv('Risk1.csv')这里首先进行了数据选择,然后调用to_csv方法生成指定文件。运行后可以在当前项目目录中看到该文件。同时,pandas提供了一种格式化的数据文件生成方法,即按照网页格式生成文件。比如:importpandasaspddata=pd.read_csv('txtdata1.csv')data[data['Risk']==1].to_html('Risk1.html')此时的打开Risk1.html文件可以看到完整的网页格式的数据。教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:一般上市公司财务数据库2000-2009,下载地址为:/python/mooc2-data/2/stock2000_2009.zip查询1、查询各个年度资产负债率合理的上市公司股票资产负债率=总负债/总资产资产负债率应在40%~60%之间较为合理importpandasaspddata=pd.read_csv('一般上市公司财务数据库2000-2009.csv',encoding='utf-8')pd.set_option('display.max_columns',None)data['资产负债率']=data['负债合计']/data['总资产']print(data[(data['资产负债率']>=0.4)&(data['资产负债率']<=0.6)]['股票简称'])查询2:查询和2007年中国铁建具有相同基本每股收益的股票importpandasaspddata=pd.read_csv('一般上市公司财务数据库2000-2009.csv',encoding='utf-8')pd.set_option('display.max_columns',None)value=data[(data['股票简称']=='中国铁建')&(data['年度']==2007)]['基本每股收益'].valuesprint(data[(data['基本每股收益']==value[0])&(data['股票简称']!='中国铁建')]['股票简称'])

课程教案负责人:主讲人:授课题目(教学章、节或主题):5数据查询5.5数据排序5.6数据分组聚合5.7数据连接授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过实践课程,着重培养学生抽象分析问题和设计算法、编程实现解决问题的能力。重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):1)结合pandas介绍DataFrame的高级操作,包括数据排序、数据分组、数据连接等。2)结合学生数据、股市数据、图书借阅数据等数据以案例介绍各种常见数据查询方法。教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:1)慕课《Python大数据分析》完成第三章测试练习。2)十年的某图书馆读者借阅记录,有读者号(uid)、图书号(bid)、图书标题(title)和借阅日期(date)四个列。下载地址为:/python/mooc2-data/2/lending.zip练习:a)查询借阅量最大的十本书b)查询被同一用户在一年中借阅多次的图书借阅情况参考答案:importpandasaspdrecords=pd.read_csv('lending.dat')print(records[['uid','bid']].groupby('bid').count().sort_values(by='uid',ascending=False).head(10))——————————importpandasaspdrecords=pd.read_csv('lending.dat')records['year']=pd.to_datetime(records['date']).dt.yearrecords1=records[['uid','bid','year','title']].groupby(['uid','bid','year']).\count().sort_values(by='title',ascending=False)print(records1[records1['title']>2])

课程教案负责人:主讲人:授课题目(教学章、节或主题):6数据可视化6.1数据可视化基本方法6.2图形样式的美化6.3柱状图绘制6.4饼状图绘制授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过数据可视化学习,掌握Python进行数据分析和科学计算的方法,掌握Python+pandas进行数据处理的基本用法,掌握使用Python+matplotlib进行数据可视化的用法,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):1)结合matplotlib介绍可视化图形绘制方法。2)结合线形图、柱状图和饼状图等常见图形,说明样式美化和常见数据表现方法。教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:慕课《Python大数据分析》完成第六章第七章内容学习。根据读者借阅记录,绘制在所有年度借阅量最大的五部图书在各个年份借书总量的变化趋势(同一用户对同一书籍的多次借阅看成一次)参考答案:importpandasaspdimportmatplotlib.pyplotaspltframe=pd.read_csv('lending.dat')#读取文件frame['date']=pd.to_datetime(frame['date'])#转换为时间类型frame=frame.groupby(['uid','bid']).agg(title=('title','first'),date=('date','max'))#对同一用户对同一图书的多次借阅进行汇总,时间以最大值为准frame=frame.reset_index()#恢复索引中的uid和bid到数据列中,以方便后续对这些数据列进行分组统计list1=frame[['uid','bid']].groupby(['bid']).count().sort_values(by=['uid'],ascending=False).head(5).index#获取这几本图书IDframe=frame[frame['bid'].isin(list1)]#获取这本书的相关借阅记录frame=frame.groupby([frame.date.dt.year,frame['bid']]).agg(title=('title','first'),uid=('uid','count'))#得到每本图书每年的借阅量frame=frame.reset_index()#恢复索引中的年份和图书号到正常数据列中foriinlist1:#循环显示五条线形图frame1=frame[frame['bid']==i]plt.plot(frame1.date,frame1['uid'],label=frame1['title'].max())plt.rcParams['font.sans-serif']=['SimHei']plt.legend()plt.show()显示为:

课程教案负责人:主讲人:授课题目(教学章、节或主题):实验:股票数据获取股票每天的涨幅分析授课时间授课类型(教学课型):□理论课实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过实践课程,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。实验目的:本实验主要练习pandas库的时间处理方法.实验操作:时间序列不仅可以用于数据记录中的列表示和索引表示,也广泛应用于各种时间计算等常见操纵中。结合股票交易数据,完成股票时序趋势分析。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):时序曲线中常常使用到向上累积曲线或者向下累积曲线,所谓向上累积曲线,一般是指从前往后遍历时序数据,逐渐累加每个时间点上的数值。对于租赁和商务服务业城镇单位就业人员,请绘制向上累积曲线或者向下累积曲线。数据下载(/python/data/就业人口行业划分.csv)参考答案:importpandasaspdimportmatplotlib.pyplotaspltdata=pd.read_csv('就业人口行业划分.csv',encoding='GBK')data['col1']=data['租赁和商务服务业城镇单位就业人员(万人)']/data['租赁和商务服务业城镇单位就业人员(万人)'].sum()data['col2']=data['col1'].cumsum()data['col3']=data['col1'][::-1].cumsum()plt.plot(data['年度'],data['col2'])plt.plot(data['年度'],data['col3'])fori,jinzip(data['年度'],data['col2']):plt.text(i,j,'%.3f'%j,ha='center',fontsize=16)fori,jinzip(data['年度'],data['col3']):plt.text(i,j,'%.3f'%j,ha='center',fontsize=16)plt.show()K线图绘制(要导入mpl_finance)数据下载(/python/data/个股行情.zip)参考答案:importpandasaspdimportmpl_financeasmpffrommatplotlibimportpyplotasplt#加载数据data=pd.read_csv('个股行情.csv',encoding='GBK')data=data[data['代码']=='600629.SH'][['日期','开盘价(元)','最高价(元)','最低价(元)','收盘价(元)','成交量(股)']]data=data[data['日期']>='2016-01-01']data['日期']=pd.to_datetime(data['日期'])data=data.set_index('日期')#绘制K线图fig=plt.figure(figsize=(15,6),dpi=100)ax=fig.add_subplot()mpf.candlestick2_ochl(ax,opens=data['开盘价(元)'],closes=data['收盘价(元)'],highs=data['最高价(元)'],lows=data['最低价(元)'],colorup='r',colordown='g',width=0.5)ax.set_xticks(range(0,len(data.index),15))ax.grid()plt.show()输出为:教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:1)利用网上公开的股票数据接口(如Tushare等),获取股票数据,对交易量变化进行年度和月度的可视化展示。2)利用Amazon音乐器材类商品评分数据,以月份信息为单位,根据评分平均值、评分总数来观察下相关数据的时序变化特点。

课程教案负责人:主讲人:授课题目(教学章、节或主题):6数据可视化6.5动态图绘制6.6地图可视化授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过课程,掌握Python进行数据分析和科学计算的方法,掌握Python+pandas进行数据处理的基本用法,掌握使用Python+matplotlib进行数据可视化的用法,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):1)介绍基于networkx等模块的网络图绘制a. 强调网络节点和边的设计方法,并解释更多的设计可能性b. 如有可能,可以利用诸如gephi等可视化工具软件,比较和分析设计功能2)介绍基于pyecharts等模块的地图可视化a. 限于国家要求,地图信息都不便于在网上展示,因此慕课、教材目前已经删除所有演示图例,建议大家课上多做演示。教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:慕课《Python大数据分析》完成7.2——7.5学习。从国家统计局网站(/search.htm)下载按行业划分的就业人口年度数据,并绘制下面的基本图例:参考答案:importpandasaspdimportmatplotlib.pyplotaspltdata=pd.read_csv('就业人口行业划分.csv',encoding='GBK')data=data.Tfig=plt.figure(figsize=(200,20),dpi=40)fig.subplots_adjust(left=0.3)plt.barh(data.index[2:],data[16][2:])plt.rcParams['font.sans-serif']=['SimHei']plt.yticks(fontsize=24)plt.show()参考答案:importpandasaspdimportmatplotlib.pyplotaspltdata=pd.read_csv('就业人口行业划分.csv',encoding='GBK')data=data.Tplt.figure(figsize=(30,20),dpi=40)plt.pie(data[16][2:],labels=data.index[2:],autopct='%3.1f%%',colors=['yellowgreen','gold','lightskyblue','lightcoral'],textprops={'color':'#444444','size':15,'weight':'bold'})plt.rcParams['font.sans-serif']=['SimHei']plt.show()

课程教案负责人:主讲人:授课题目(教学章、节或主题):7机器学习分析7.1数据分类预测7.2数据分析过程的完善7.3决策树与随机深林授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过机器学习分析课程,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):1)介绍机器学习的基本概念2)结合实例说明机器学习各个过程的Python实现方法3)强调原始数据预处理的重要性4)区分特征列、预测列和训练集、测试集的区别5)介绍参数调优的一般方法6)介绍交叉验证教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:慕课《Python大数据分析》完成8.1、8.2的学习。根据seaborn的鸢尾花数据集,利用所有特征来预测类别,比较下几种常见分类模型的准确度:参考答案:importseabornassnsfromsklearn.model_selectionimporttrain_test_splitfromsklearn.naive_bayesimportGaussianNBfromsklearn.metricsimportaccuracy_scoreiris=sns.load_dataset('iris')X_iris=iris.drop('species',axis=1)y_iris=iris['species']Xtrain,Xtest,ytrain,ytest=train_test_split(X_iris,y_iris,random_state=1)model=GaussianNB()model.fit(Xtrain,ytrain)y_model=model.predict(Xtest)print(accuracy_score(ytest,y_model))importsslssl._create_default_https_context=ssl._create_unverified_context

课程教案负责人:主讲人:授课题目(教学章、节或主题):实验:机器学习分析授课时间授课类型(教学课型):□理论课实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过实践课程,如何利用Python相关的类库和第三方工具进行分析,重点培养学生动手能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):动态柱状图:/leeshuqing/article/details/1216018482)利用时间信息显示动态效果图。数据下载/python/data/Indicators.zipimportpandasaspdimportplotly.expressaspx#汇总每年的出口、进口指标值data=pd.read_csv('Indicators.csv')data1=data[(data['CountryName']=='China')&(data['IndicatorName']=='Importsofgoodsandservices(%ofGDP)')]data2=data[(data['CountryName']=='China')&(data['IndicatorName']=='Exportsofgoodsandservices(%ofGDP)')]result=data1[['Year','Value']]result['Indicator']='Imports'data2=data2[['Year','Value']]data2['Indicator']='Exports'result=result.append(data2)#绘制动态网页fig=px.bar(result,y="Indicator",x="Value",animation_frame="Year",orientation='h',range_x=[0,result['Value'].max()],color="Indicator")fig.update_layout(width=1000,height=500,xaxis_showgrid=False,yaxis_showgrid=False,showlegend=False)fig.show()输出为:教学活动组织设计:混合式,并通过中国大学慕课《小白学Python》进行翻转课堂。课后任务:1)结合学生自己获取的数据,构造节点,并通过相似度测度形成边权值,绘制网络结构,如小说的关键词网络图、社交网络图等。

课程教案负责人:主讲人:授课题目(教学章、节或主题):7机器学习分析7.4特征数据的处理7.5回归分析授课时间授课类型(教学课型):理论课□实验课□习题课□实践课□其它教学目的、要求(可以从知识、能力、素养三个层次展开):通过python的机器学习分析,如何利用Python相关的类库和第三方工具进行科学计算,重点培养学生分析问题的能力,以及培养学生数据计算思维能力、分析数据问题和解决数据问题的能力。教学内容(包括基本内容、教学过程设计、重点、难点,在教学过程设计中需说明使用的线上教学工具及线上资源):回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。机器学习是些计算机分析方法的统称,虽然很难,但是Python已经提供了很多很好用的库,我们只需学会如何使用即可,正如相机拍照原理和过程很复杂,但是我们只需按动那个快门键;机器学习方法不同于前面我们介绍的一些基于现有数据进行总结性分析的方法,这些

温馨提示

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

评论

0/150

提交评论