首页 数据分析基础与实践教学课件汇总整本书电子教案全套教学教程

数据分析基础与实践教学课件汇总整本书电子教案全套教学教程

举报
开通vip

数据分析基础与实践教学课件汇总整本书电子教案全套教学教程第一章概论西华大学数据分析基础与实践第一章走进PythonXXX学校XXX2022目录Contents课程介绍了解PythonPython安装开发环境搭建课程介绍一求是明德卓越1.1为什么学习4当今社会从IT时代进入DT时代,数据分析技术十分重要。数据分析是一种思想,一种方法,一种处理问题的工具,这种工具可以应用到很多不同的研究领域,从应用的领域实现学科融合。本课程将包括必要的语言基础和编程思想,完整的数据分析方法理论基础,详细的应用案例实践分析。希望通过大量的实际应用案例,引导读者快速进入数据分析的世界,通过不断...

数据分析基础与实践教学课件汇总整本书电子教案全套教学教程
第一章概论西华大学数据 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 基础与实践第一章走进PythonXXX学校XXX2022目录Contents课程介绍了解PythonPython安装开发环境搭建课程介绍一求是明德卓越1.1为什么学习4当今社会从IT时代进入DT时代,数据分析技术十分重要。数据分析是一种思想,一种方法,一种处理问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 的工具,这种工具可以应用到很多不同的研究领域,从应用的领域实现学科融合。本课程将包括必要的语言基础和编程思想,完整的数据分析方法理论基础,详细的应用案例实践分析。希望通过大量的实际应用案例,引导读者快速进入数据分析的世界,通过不断的练习和案例复现,快速积累学习的成就感,保持学习的激情。‹#›XXXXXXXXXXXXXXXXX1.2课程组成Python语言基础:在数据分析中,必须要借助一些编程语言才能完成相应的分析任务。数据分析最常用的语言就是Python,因此在正式进入数据分析相关内容介绍之前,首先学习Python语言的相关基础知识。数据分析基础:重点介绍基于Python进行数据分析的基本思路和方法,包括数据获取、数据预处理、数据分析等。数据分析实战:通过对几个完整的数据分析案例的介绍,加深读者对于利用Python进行数据分析方法的理解。5‹#›XXXXXXXXXXXXXXXXX了解Python二求是明德卓越2.1什么是Python7Python是一种面向对象的高级编程语言,它具有集成的动态语义,主要用于Web和应用程序开发,以及科学研究。Python支持使用模块和包,可以以模块化的方式进行程序设计,并且可以在各种项目中重用代码。具有完备的开发社区,全球众多开源资源可控使用。Python相对简单,易于学习 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 库和解释器都是免费的,既有二进制形式,也有源代码形式。也没有排他性,因为Python和所有必需的工具在所有主要平台上都可用。‹#›2.2Python的产生与发展‹#›2.3Python的特点9简单:Python是一门简单而语法简约的语言。阅读好的Python程序感觉就像阅读英语,尽管是非常严格的英语。Python的这种伪代码特性是其最大强项之一,它可让程序员专注于解决问题的办法而不是语言本身。容易学习:Python非常容易上手,它具有格外简单的语法。‹#›2.3Python的特点10免费开源:Python是一个FLOSS(自由/自由与开源软件)的例子。在一些简单的条款之下,你可以自由地分发这个软件的拷贝,阅读其源代码,修改它,或者将其一部分用到新的自由程序中。FLOSS是基于共享知识社区的概念,这是Python如此好的原因之一——它是由那些希望看到更好的Python的社区创建和不断改进的。高级语言:当使用Python编写程序时,永远不需要担心低级细节,比如对内存的管理和使用等。‹#›2.3Python的特点11可移植性:基于其开放源代码的特性,Python已经被移植到许多平台。只要你足够小心,避免使用系统相关特性,你的所有Python程序都可以不加修改地运行在这其中任意平台。解释型语言:Python不需要事先进行编译,只需从源代码直接运行程序即可,不必担心程序的编译、保证恰当的库被链接和载入等等。这也使得Python程序更易于移植。(C和C++是编译型的语言,需要先编译再执行)‹#›2.3Python的特点12面向对象特性:Python同时支持面向过程和面向对象编程。在面向过程语言中,程序围绕着过程或者函数(只不过是可重复使用的程序片段)构建。在面向对象语言中,程序围绕着对象(数据和功能的组合)构建。Python具有非常强大但是过于简洁的执行面向对象编程的方式。可扩展性强:如果需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,通常可以使用C或C++完成那部分程序,然后从Python程序中调用。‹#›2.3Python的特点13可嵌入:程序员可以将Python嵌入到C/C++程序中,使其获得“脚本化”的能力。强大的扩展库:Python标准库已经能够帮助用户完成许多工作,包括正则表达式、文档生成、单元测试、线程、数据库等。除了标准库,还有各式各样的其它高质量的第三方库,可以在Python包索引中找到它们。也有很多热门的交流社区,每天都有很多优秀的第三方库发布。‹#›2.4Python的应用应用Django、Flask等框架Web应用开发利用Python编写各种自动化运维脚本自动化运维Python在人工智能领域内的机器学习、神经网络、深度学习等方面,都是主流编程语言。科学计算和人工智能Python提供有很多服务于编写网络爬虫的工具以及完整的爬虫框架网路爬虫很多游戏使用C++编写图形显示等高性能模块,而使用Python编写游戏的逻辑。游戏开发图像处理、机器人控制等。其他‹#›Python的安装三求是明德卓越3Python的安装16目前,Python有两个版本供大家选择和使用,即Python2.x和Python3.x。Python3.x是对Python2.x的一个较大的更新。由于Python3.x在设计的时候并没有考虑到向下相容,因此许多针对Python2.x设计的函数、语法或者库等都无法在Python3.x正常执行。并且Python核心团队 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 在2022年停止对Python2的支持。因此建议大家使用Python3.x。‹#›3Python的安装17若读者仅需要使用Python编译环境,可采用1.2.1节的官方安装方式。若读者需要利用Python进行数据分析和处理,需要使用到各种Python库,例如Numpy、Scipy、Pandas、Scikit-learn,在这样的情况下,建议使用1.2.2节介绍的Anaconda安装方法,可同时完成Python及各种库的安装,非常方便。‹#›3Python的安装18Anaconda是专注于数据分析的Python发行版本,包含了Conda、Python等190多个科学包及其依赖项。其中,Conda是开源包和虚拟环境的管理系统。用户可以使用Conda来安装、更新、卸载工具包,并且它更加关注于数据科学相关的工具包,在安装Anaconda时,就预先集成了常用的Numpy、Scipy、Pandas、Scikit-learn这些数据分析中常用的包。出于省时省心角度出发,强烈建议大家安装Anaconda。‹#›开发环境搭建四求是明德卓越4开发环境搭建20安装完成Python运行环境之后,其实就可以通过命令行来编写Python程序了,不过这种方法和其他编程语言的使用习惯相差很大,很多人都不太愿意直接在命令行中进行Python代码的编写,因此用户还需要安装可用于Python开发的IDE工具。推荐JupyterNotebook(有时候将其简称为Jupyter)和PyCharm两种开发工具。前者是一种基于网页的用于交互计算的应用程序,后者更接近于其他语言的IDE环境。如果之前直接安装了anaconda,那么已经自动安装好了Jupyter了。‹#›感谢聆听第一章概论西华大学数据分析基础与实践第二章Python语法基础XXX学校XXX2022目录Contents第一个Python程序Python的基本语法变量与基本数据类型流程控制函数、模块和包异常处理第一个Python程序一求是明德卓越1.1技术要点25从输出一行“HelloWorld”开始。需要用到Python的输出函数print。Python中的print函数用于打印输出,其语法为:参数说明:Objects:复数,表示可以一次输出多个对象。输出多个对象时,需要用“,”分隔。Sep:用来间隔多个对象,默认值是一个空格。End:用来设定什么结尾,默认值是换行符\n,可以换成其他字符串。file:要写入的文件对象。print(*objects,sep‘’,end=‘\n,file=sys.stdout)‹#›XXXXXXXXXXXXXXXXX1.1技术要点温馨提示:print在Python3.x版本中是一个函数,但是在Python2.x中不是一个函数,只是一个关键字。在Python2.x中,如果想让print语句输出的内容在一行上显示,可以在后面直接加上逗号就可以了,但是在Python3.x中,使用print()函数时,不能直接加上逗号,需要加上“,end=‘分隔符’”。26‹#›XXXXXXXXXXXXXXXXX1.2编程实现27利用JupyterNotebook实现‹#›XXXXXXXXXXXXXXXXX1.2编程实现28利用PyCharm实现‹#›XXXXXXXXXXXXXXXXXPython的基本语法二求是明德卓越2.1编码问题30默认情况下,Python3的源码文件以UTF-8编码,所有字符串都是unicode字符串。可以为源码文件指定不同的编码。需要强调的是,Python中容易出现乱码的问题,此时可以通过显式指定编码类型的方式来解决。‹#›2.2Python的标识符和保留字9Python中的标识符是用于识别变量、函数、类、模块以及其他对象的名字,标识符可以包含字母、数字及下划线(_),但是必须以一个非数字字符开始。字母仅仅包括ISO-Latin字符集中的A–Z和a–z。标识符对大小写敏感,因此FOO和foo是两个不同的对象。特殊符号,如$、%、@等,不能用在标识符中。另外,如if,else,for等单词是保留字,也不能将其用作标识符。‹#›2.2Python的标识符和保留字32保留字说    明and用于表达式运算,逻辑与操作as用于类型转换assert断言,用于判断变量或条件表达式的值是否为真break中断循环语句的执行class用于定义类continue继续执行下一次循环def用于定义函数或方法del删除变量或序列的值‹#›2.2Python的标识符和保留字33elif条件语句,与if,else结合使用else条件语句,与if,elif结合使用,也可用于异常和循环语句exceptexcept包含捕获异常后的操作代码块,与try,finally结合使用exec用于执行python语句forfor循环语句finally用于异常语句,出现异常后,始终要执行finally包含的代码块,与try,except结合使用‹#›2.2Python的标识符和保留字34from用于导入模块,与import结合使用globe定义全局变量if条件语句,与else,elif结合使用import用于导入模块,与from结合使用in判断变量是否在序列中is判断变量是否为某个类的实例lambda定义匿名变量not用于表达式运算,逻辑非操作‹#›2.2Python的标识符和保留字35or用于表达式运算,逻辑或操作pass空的类,方法,函数的占位符print打印语句raise异常抛出操作return用于从函数返回计算结果trytry包含可能会出现异常的语句,与except,finally结合使用whilewhile的循环语句with简化python的语句yield用于从函数依此返回值‹#›2.3Python的注释36Python中单行注释以#开头Python中多行注释:使用多个#号使用一对三个单引号('''……''')使用一对三个双引号("""……""")温馨提示:Python中针对引号的使用区分得不严格,比如表示字符串的时候,可以使用单引号,也可以使用双引号。但需要注意的是,单引号和双引号必须成对出现,不能混合使用,不能一半是单引号,另一半却是双引号。‹#›2.4行与缩进37Python最具特色的就是使用缩进来表示代码块,而不是使用大括号。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。通常建议用一个Tab键表示一级代码块。‹#›2.5Python中多行语句的表示38Python通常是一行写完一条语句,但如果语句很长,可以使用反斜杠(\)来实现多行语句。在[],{},或()中的多行语句,则不需要使用反斜杠(\)如:total=num_one+\num_two+\num_threetotal=['num_one','num_two','num_three','num_four','num_five']‹#›2.6Python中模块的引用39在python用import或者from...import来导入相应的模块(也叫做包或者库)。具体的方法可以有以下几种形式:将整个模块(somemodule)导入:importsomemodule从某个模块中导入某个函数:fromsomemoduleimportsomefunction从某个模块中导入多个函数:fromsomemoduleimportfirstfunc,secondfunc将某个模块中的全部函数导入:fromsomemoduleimport*‹#›变量与基本数据类型三求是明德卓越3.1变量41Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。不需要为变量指定类型,默认会把第一次为变量赋值的类型作为变量类型。可以使用等号(=)来给变量赋值。等号运算符左边是一个变量名,右边是存储在变量中的值。可以同时为多个变量赋值。可以为多个对象指定多个变量。‹#›3.2标准数据类型42Python3中有六个标准的数据类型,分别是:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)和Dictionary(字典)。其中不可变的数据类型有三个,分别是Number、String和Tuple。可变的数据类型也有三个:List、Dictionary、Set。下面将依次介绍这六种数据类型。‹#›3.2标准数据类型43Number(数字)Python3支持四种数字类型,分别是int(整型)、float(浮点型)、bool(布尔类型)以及complex(复数类型)。在Python3里,只有一种整数类型int,表示为长整型,没有python2中的long。复数由实数部分和虚数部分构成,可以用a+bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型,比如1+2j、1.1+2.2j。Python内置的type()函数可以用来查询变量所指的对象类型。还可以用isinstance来判断某个变量是否为指定的类型。数值的除法包含两个运算符:/返回一个浮点数,//返回一个整数。在混合计算时,Python会把整型转换成为浮点数。‹#›3.2标准数据类型44String(字符串)Python中的字符串用单引号'或双引号"括起来,同时使用反斜杠\转义特殊字符。字符串可以用下标进行截取(也叫切片),在数据分析中经常用到此操作。字符串还可以用加号+表示连接,用星号*表示复制当前字符串,与之结合的数字为复制的次数。Python支持格式化字符串的输出,字符串格式化使用与C中sprintf函数类似的语法。比如print("我叫%s今年%d岁!"%('小明',10))的输出为:我叫小明今年10岁!。反斜杠可以用来转义,使用r可以让反斜杠不发生转义。反斜杠还可以作为续行符,表示下一行是上一行的延续。Python没有单独的字符类型,一个字符就是长度为1的字符串。Python中的字符串不能改变,向一个索引位置赋值会导致错误。‹#›3.2标准数据类型45List(列表)List(列表)是Python中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(即支持列表嵌套)。列表是写在方括号[]之间、用逗号分隔开的元素列表。和字符串一样,列表同样可以被索引和截取(也叫切片),列表被截取后返回一个包含所需元素的新列表。列表的索引和截取方式和字符串类似,同样也是前闭后开的栅栏式截取,索引值以0为开始值,-1为从末尾的开始位置。列表同样支持用加号+表示连接,用星号*表示重复。‹#›3.2标准数据类型46列表索引示意‹#›3.2标准数据类型47函数描述len(list)列表元素个数max(list)返回列表元素最大值min(list)返回列表元素最小值list(seq)将元组转换为列表列表的函数‹#›3.2标准数据类型48列表的方法方法描述list.append(obj)在列表末尾添加新的对象list.count(obj)统计某个元素在列表中出现的次数list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)list.index(obj)从列表中找出某个值第一个匹配项的索引位置list.insert(index,obj)将对象插入列表‹#›3.2标准数据类型49列表的方法list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值list.remove(obj)移除列表中某个值的第一个匹配项list.reverse()反向列表中元素list.sort(key=None,reverse=False)对原列表进行排序list.clear()清空列表list.copy()复制列表‹#›3.2标准数据类型50Tuple(元组)Python中的Tuple(元组)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号()里,元素之间用逗号隔开,元组中的元素类也可以不相同。元组中的元素类型也可以不相同。元组与字符串类似,可以被索引且下标索引从0开始,-1为从末尾开始的位置。元组也可以进行截取,方式和字符串以及列表相似。虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。‹#›3.2标准数据类型51Set(集合)集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。基本功能是进行成员关系测试和删除重复元素。可以使用大括号{}或者set()函数创建集合。温馨提示:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典的。‹#›3.2标准数据类型52方法描述add()为集合添加元素clear()移除集合中的所有元素copy()拷贝一个集合difference()返回多个集合的差集difference_update()移除集合中的元素,该元素在指定的集合也存在discard()删除集合中指定的元素intersection()返回集合的交集intersection_update()删除此集合中不存在于其他指定集合中的项目集合的内置函数清单‹#›3.2标准数据类型53集合的内置函数清单isdisjoint()判断两个集合是否包含相同的元素,如果没有返回True,否则返回Falseissubset()判断指定集合是否为该方法参数集合的子集issuperset()判断该方法的参数集合是否为指定集合的子集pop()随机移除元素remove()移除指定元素‹#›3.2标准数据类型54集合的内置函数清单symmetric_difference()返回两个集合中不重复的元素集合symmetric_difference_update()移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中union()返回两个集合的并集update()用此集合和其他集合的并集来更新集合‹#›3.2标准数据类型55Dictionary(字典)字典(dictionary)是Python中另一个非常有用的内置数据类型。字典是一种映射类型,字典用{}标识,它是一个无序的键(key):值(value)的集合。键(key)必须使用不可变类型。在同一个字典中,键(key)必须是唯一的。‹#›3.2标准数据类型56温馨提示:列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于,字典当中的元素是通过键来存取的,而不是通过偏移存取。类型。字典中不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会覆盖前一个值。字典值可以是任何的python对象,既可以是标准的对象,也可以是用户定义的,但键必须使用不可变类型。因此,键所以可以用数字,字符串或元组充当,而用列表就不行。‹#›3.2标准数据类型57字典的函数函数描述len(dict)计算字典元素个数,即键的总数。str(dict)输出字典,以可打印的字符串表示。type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。‹#›3.2标准数据类型58字典的方法方法描述radiansdict.clear()删除字典内所有元素radiansdict.copy()返回一个字典的浅复制radiansdict.fromkeys()创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值radiansdict.get(key,default=None)返回指定键的值,如果值不在字典中返回default值keyindict如果键在字典dict里返回true,否则返回falseradiansdict.items()以列表返回可遍历的(键,值)元组数组radiansdict.keys()返回一个迭代器,可以使用list()来转换为列表‹#›3.2标准数据类型59字典的方法radiansdict.setdefault(key,default=None)和get()类似,但如果键不存在于字典中,将会添加键并将值设为defaultradiansdict.update(dict2)把字典dict2的键/值对更新到dict里radiansdict.values()返回一个迭代器,可以使用list()来转换为列表pop(key[,default])删除字典给定key所对应的值,返回值为被删除的值。key值必须给出。若key不存在,返回default值。popitem()随机返回并删除字典中的最后一对键和值。‹#›3.2标准数据类型60Python中的数据类型转换数据类型转换函数清单函数描述int(x[,base])将x转换为一个整数float(x)将x转换到一个浮点数complex(real[,imag])创建一个复数str(x)将对象x转换为字符串repr(x)将对象x转换为表达式字符串eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象tuple(s)将序列s转换为一个元组‹#›3.2标准数据类型61数据类型转换函数清单list(s)将序列s转换为一个列表set(s)转换为可变集合dict(d)创建一个字典。d必须是一个(key,value)元组序列。frozenset(s)转换为不可变集合chr(x)将一个整数转换为一个字符ord(x)将一个字符转换为它的整数值hex(x)将一个整数转换为一个十六进制字符串oct(x)将一个整数转换为一个八进制字符串‹#›流程控制四求是明德卓越4.1条件语句63Python中的条件控制语句和其他语言的类似,是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块,包括了if、if……else和if……elif……else等几种形式。温馨提示:Python中用elif代替了elseif,所以if语句的关键字为:if……elif……else。每个条件后面要使用冒号:表示接下来是满足条件后要执行的语句块。使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。在Python中没有switch……case语句。‹#›4.2循环语句64while循环语句whileexpression:suite_to_repeat其中,expression时候一个条件表达式,当expression值为True时执行suite_to_repeat代码块。for循环语句foriter_variniterable_object:suite_to_repeatfor循环可以明确循环的次数,可以用来实现遍历一个数据集内的成员,通常在列表解析中使用或者生成器表达式中使用,其中iterable_object表示可迭代的数据类型,比如String、List、Tuple、Dictionary甚至是File。‹#›4.2循环语句65Python中有一个range()函数通常和for循环一起使用,range()函数主要用来产生一组数列,它的语法可以有下面三种形式:range(start,end,step=1)range(start,end)range(end)其中start表示起始值,end表示终止值,step表示步长。需要特别强调的是,在使用range函数的时候,range函数产生的数列是包括起始值但不包括终止值的,和之前列表的截取类似,也是一种前闭后开的栅栏式索引方法。另外缺省的步长值为1。‹#›4.2循环语句66循环中的break,continue和elsePython中的break和continue的含义和其他语言类似,break语句用于终止当前循环,转而执行循环之后的语句。Continue语句用于停止当前轮次的循环,重新进入下一轮循环(如果循环条件还满足的话)。Python的循环还支持else语句,如果循环代码从break处终止,则会跳出循环,如果正常结束循环,则执行else中代码。‹#›函数、模块和包五求是明德卓越5.1函数68函数的定义和调用函数代码块以def关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串,用于存放函数说明。函数内容以冒号起始,并且缩进。return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None。函数定义好之后,就可以通过函数名对起进行调用了,调用方式是函数名加上一对小括号,括号之间是所有可选的参数,即使没有参数,小括号也不能省略。‹#›5.1函数69函数的参数传递默认参数:函数的参数可以有一个默认值,如果提供有默认值,在函数定义中,默认参数以赋值语句的形式提供。当调用的时候没有传入参数,则直接使用默认参数。需要注意的是,默认参数一般需要放置在参数列表的最后。关键字参数:关键字参数是让调用者通过使用参数名区分参数。允许改变参数列表中的参数顺序。传递函数:函数可以像参数一样传递给另外一个函数。‹#›5.1模块和包70模块的定义和使用模块是一个包含所有用户定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用python标准库的方法。如果想使用Python源文件编写的模块,只需在另一个源文件里执行import语句,将其导入即可。不管执行了多少次import,一个模块只会被导入一次。当使用import语句的时候,如果模块在当前的搜索路径就会被导入。Python中还可以使用from…import语句进行模块导入。from…import语句可以从模块中导入一个指定的部分到当前命名空间中。‹#›5.2模块编写的更多技巧71模块除了方法定义,还可以包括可执行的代码。这些代码一般用来初始化这个模块。这些代码只有在第一次被导入时才会被执行。每个模块有各自独立的符号表,在模块内部为所有的函数当作全局符号表来使用。所以,模块的作者可以放心大胆的在模块内部使用这些全局变量,而不用担心把其他用户的全局变量搞混淆。在模块中同样可以通过import导入其他模块。一个模块被另一个程序第一次引入时,其主程序将运行。如果希望在模块被引入时,模块中的某一程序块不执行,那么可以用__name__属性来使该程序块仅在该模块自身运行时执行。内置的函数dir()可以找到模块内定义的所有名称。以一个字符串列表的形式返回。如果没有给定参数,那么dir()函数会罗列出当前定义的所有名称。‹#›5.3包72包是一种管理Python模块命名空间的形式,采用"点模块名称"。比如一个模块的名称是A.B,那么他表示一个包A中的子模块B。在导入一个包的时候,Python会根据sys.path中的目录来寻找这个包中包含的子目录。目录只有包含一个叫做__init__.py的文件才会被认作是一个包,主要是为了避免一些无效的名字(比如string)不小心影响搜索路径中的有效模块。最简单的情况,放一个空的:file:__init__.py就可以了。当然这个文件中也可以包含一些初始化代码。‹#›异常处理六求是明德卓越6异常处理74try……except在执行的时候,首先会执行try子句(在关键字try和关键字except之间的语句)。如果没有异常发生,则忽略except子句,try子句执行后结束。如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。‹#›6异常处理75类名描述BaseException所有异常的基类Exception常规异常的基类AttributeError对象不存在此属性IndexError序列中无此索引IOError输入/输出操作失败KeyboardInterrupt用户中断执行(通常输入Ctr-C)KeyError映射中不存在此键NameError找不到名字(变量)SyntaxErrorPython语法错误TypeError对类型无效的操作ValueError传入无效的参数ZeroDivisionError除(或取模)运算的第二个参数为0‹#›6异常处理76‹#›感谢聆听第一章概论西华大学数据分析基础与实践第三章Python面向对象程序设计XXX学校XXX2022目录Contents面向对象的基本概念类和对象属性和方法类的继承应用举例面向对象的基本概念一求是明德卓越1.1面向对象程序设计的基本思想81‹#›XXXXXXXXXXXXXXXXX1.1面向对象程序设计的基本思想82活字印刷便是典型的面向对象的思想,在活字印刷术之前,要修改文章,必须重刻,要加字,必须重刻,要重新排列,必须重刻,印完这本书后,此版已无任何可再利用的价值,十分浪费。有了活字印刷之后:要对样章做出修改,只需要更改需要更换的字就可以了,这个特性叫做可维护。这些字并不是用完这次就再也没有别的地方可以用了,完全可以在后来的印刷中重复使用,这个特性叫做可复用。这首诗如果需要增加字,只需要另外刻字加入就可以了,不需要推翻重来,这个特性是可扩展。字的排列其实有可能是竖排,也有可能是横排,这个时候只需要将活字移动就可做到满足排列需求,这个特性叫做灵活性好。在面向对象的编程思想中,需要考虑如何通过封装、继承和多态,把程序的耦合度降低(传统印刷术的问题就在于所有的字都刻在同一版面上,使其耦合度太高所制),需要利用恰当的设计模式使得程序更加的灵活,容易修改,并且易于复用,上述的所有问题都将变得轻松容易许多。‹#›XXXXXXXXXXXXXXXXX1.2面向对象程序设计的基本特性面向对象程序设计是一种程序设计范型,同时也是一种程序开发的方法。它将对象(对象指的是类的实例)作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。面向对象的基本思想是使用对象、类、继承、封装和消息等基本概念来进行程序设计。从现实世界中客观存在的事物出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。从理论上来讲,面向对象程序包括四个基本特征:抽象、封装、继承与派生、多态性。有时候也会把面向对象程序设计的基本特征描述为封装、继承和多态三个,因为抽象和封装可以理解为相似的概念,而继承和派生也是相对而言的。83‹#›XXXXXXXXXXXXXXXXX1.2面向对象程序设计的基本特性抽象为了更好的说明抽象的概念,先来讨论一个现实当中总是无法避免的东西——数学。数学是一门抽象的学科,而抽象则正是数学的本质。在使用面向对象的方法设计一个软件系统时,首先就要区分出现实世界中的事物所属的类型,分析它们拥有哪些性质与功能,再将它们抽象为在计算机虚拟世界中才有意义的实体——类,在程序运行时,由类创建出对象,用对象之间的相互合作关系来模拟真实世界中事物的相互关联。比如,对圆这一类对象的抽象:数据抽象——半径radius,方法抽象——求面积GetArea()。对一个问题可能有不同的抽象结果,这取决于程序员看问题的角度和解决问题的需求。可以说,在从真实世界到计算机虚拟世界的转换过程中,抽象起了关键的作用。84‹#›XXXXXXXXXXXXXXXXX1.2面向对象程序设计的基本特性封装封装就是把对象的数据和方法结合成一个独立的单位,并尽可能隐蔽对象的内部细节。封装这一特性不仅大大提高了代码的易用性,而且还使得类的开发者可以方便地更换新的算法,这种变化不会影响使用类的外部代码。封装的作用包括:彻底消除了对传统结构方法中数据与操作分离所带来的种种问题,提高了程序的复用性和可维护性。把对象的私有数据和公共数据分离开来,保护了私有数据,减少了可能的模块间的干扰,达到了降低程序复杂性、提高可控性的目的。增强使用的安全性,使用者不必了解很多实现细节,只需要通过设计者提供的外部接口来操作它。容易实现高度模块化,从而产生软件构件,利用构件快速地组装程序。具备这种“封装”的意识,是掌握面向对象分析与设计技巧的关键。85‹#›XXXXXXXXXXXXXXXXX1.2面向对象程序设计的基本特性继承和派生一个新类从已存在的类那里获得该类已有的特性叫作类的继承,已存在的类叫作父类,也叫作基类,产生的新类叫作子类或派生类。从一个已有的类那里产生一个新类的过程叫类的派生。已存在的类叫作父类,也叫作基类,产生的新类叫作派生类或子类。类的继承和派生是同一概念,前者是从子类的角度来说,后者是从父类的角度来说的。通常说子类继承了父类,父类派生了子类。86‹#›XXXXXXXXXXXXXXXXX1.2面向对象程序设计的基本特性派生类是基类的具体化,基类是派生类的抽象。一个派生类的对象也是一个基类的对象,具有基类的一切属性和方法。派生类除了具有基类的一切属性和方法外,还可以有自己所特有的属性和方法。87‹#›XXXXXXXXXXXXXXXXX1.2面向对象程序设计的基本特性多态简单来说,多态是具有表现多种形态的能力的特征,在OO中是指,语言具有根据对象的类型以不同方式处理,特别是重载方法和继承类这种形式的能力。多态被认为是面向对象语言的必备特性。用一个比较抽象的事物来取代具体的事物的表达方法,在面向对象软件中用“多态”这一特性来模拟。在编程中使用多态的方法,可以在代码中本应使用某一具体子类的地方使用较为抽象的基类对象,这种方法所带来的好处是多态的代码具有“变色龙”的特性,即在不同的条件下,同样代码可以完成不同的功能。88‹#›XXXXXXXXXXXXXXXXX1.2面向对象程序设计的基本特性总体而言,面向对象程序设计思想和面向过程的程序设计思想可以简单做如下比较:面向过程的程序设计:优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展。面向对象的程序设计:优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。缺点:性能比面向过程低。89‹#›XXXXXXXXXXXXXXXXX类和对象二求是明德卓越2类和对象91‹#›2.1类的定义14在Python中提供了很多标准的类,用户可以在开发程序的过程中直接使用。另外,用户也可以在Python中自己定义类。类使用class关键字来定义,可以包含数据成员、方法成员以及嵌套的类型成员。定义的方法为:classClassName'''类的帮助信息'''statement其中ClassName用于指定类名,一般使用大写字母开头;statement表示类体,主要是由类变量(或类成员)、方法和属性等语句组成,如果在定义类时,没想好类的具体功能,也可以在类体中直接使用pass语句代替。‹#›2.2对象的创建和使用93Class语句本身并不创建该类的任何实例,所以在类定义完成后,可以创建类的实例,然后通过实例化的类的对象来访问类的成员,即实例化该类的对象。温馨提示:Python对于变量类型的管理非常智能,上面代码中最后一行打印输出语句中,前半部分是字符串,而后半部分Getarea方法返回的是double类型,这种输出方式在其他语言中通常会报错,但是在Python中可以正常运行,这也为程序员带来了很多方便。Python类也是对象,它们是type类的实例,即type(Rectangle)的执行结果为type。‹#›2.2对象的创建和使用94classRectangle:'''这是一个矩形类'''longside=0.0#这是矩形的长wideside=0.0#这是矩形的宽#求矩形的面积defGetarea(self):returnself.longside*self.widesider=Rectangle()r.longside=2r.wideside=3 print("该矩形的面积为:",r.Getarea())‹#›属性和方法三求是明德卓越3.1访问机制96通过封装,可以将类中的属性和方法等资源,分为不同的访问级别,对应了不同的外部访问权限。最基本的可以分为公有成员和私有成员,公有成员可以被外界访问,私有成员不能被外界访问,这就是封装中最关键的概念——访问控制。访问控制通常有三种级别:私有、受保护和公有:私有(Private):只有类自身内部可以访问。受保护(Protected):只有类自身和子类可以访问。公有(Public):任何类都可以访问。‹#›3.1访问机制97‹#›3.2方法98Python中每个实例方法的第一个参数必须对应于该实例,即该对象本身。按照惯例,这个参数名为self。后面是其他参数(如果有需要的话)。在调用方法时,无需明确提供与参数self相对应的参数。通常,需要定义的一个最重要的方法是构造函数,即__init__()方法。和其他语言的构造函数一样,在类的实例创建后就会调用这个方法。该方法负责初始化类成员。温馨提示:和其他面向对象的语言一样,Python也有析构函数,在示例销毁的时候调用,Python中的析构函数是通过__del__()来实现的,如果有必要的话,在其中执行一些资源释放操作。‹#›3.3属性99类的成员有公有成员,也有私有成员。对于公有成员来说,外部可以直接访问,但是对于私有成员来说,外部不能直接访问。可以定义一些常规方法来对这些私有成员进行访问,除此之外,还可以通过一种特殊的方法对这些私有成员进行访问,那就是属性。属性封装了一系列方法:getter、setter和deleter,但其行为与普通的数据属性相同。‹#›3.4类和静态方法100Python中普通的方法都需要先实例化一个类的对象,然后通过该对象调用相关的方法,也被称为实例方法。除了实例方法和属性之外,类还可以拥有类方法和静态方法。而静态方法与类方法则不需要进行实例化对象,都是可以通过类名来直接调用。他们之间的区别如下表所示:‹#›3.4类和静态方法101方法类别定义调用实例方法第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法)只能由实例对象调用类方法使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法)类对象或实例对象都可以调用静态方法使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法类对象或实例对象都可以调用‹#›3.4类和静态方法102类方法类方法需要使用装饰器@classmethod。原则上,类方法是将类本身作为对象进行操作的方法。假设有个方法在逻辑上采用类本身作为对象来调用更合理,那么就可以将其定义为类方法。静态方法静态方法是类中的函数,不需要实例。静态方法主要用于存放逻辑性的代码,逻辑上属于类,但是和类本身没有关系,也就是说在静态方法中,不会涉及到类中的属性和方法的操作。可以理解为,静态方法是个独立的、单纯的函数,它仅仅托管于某个类的名称空间中,便于使用和维护。静态方法使用装饰器@staticmethod。‹#›类的继承四求是明德卓越4.1类的继承104继承是一种创建类的方法,在python中,一个类可以继承来自一个或多个父类。原始类称为基类或超类。而继承也分为单继承和多继承(也叫多重继承)。和继承相对的概念叫派生,派生就是子类在继承父类的基础上衍生出新的属性。子类中独有的,父类中没有的;或子类定义与父类重名的东西。子类也叫派生类。假如已经有了几个类,而类与类之间有共同的变量属性和函数属性,就可以把这几个变量属性和函数属性提取出来作为基类的属性。而特殊的变量属性和函数属性,则在本类中定义,这样只需要继承这个基类,就可以访问基类的变量属性和函数属性。适当的使用继承可以提高代码的可扩展性。‹#›4.1类的继承105‹#›4.1类的继承106Python中的继承有如下特点:在子类中,并不会自动调用基类的__init__(),需要在派生类中手动调用。在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。先在本类中查找调用的方法,找不到才去基类中找。‹#›4.2组合107代码复用的重要的方式除了继承还有组合。组合就是在一个类中以另一个类的对象作为数据属性,称为类的组合,通常也将这样的类称为复合类或组合类。通过继承建立了派生类与基类之间的关系,它是一种“是”的关系,比如白马是马,人是动物。而通过组合的方式建立了类与组合类之间的包含关系,它是一种“有”的关系,比如老师有生日,老师有一些教的课程等等。当类之间有显著不同,并且较小的类是较大的类所需要的组件时,更推荐使用组合。‹#›4.2组合108‹#›应用举例五求是明德卓越5应用举例110绝地求生是一款当下很火热的第一人称射击游戏。在Python中,可以用面向对象的编程思想,模拟实现一个战士开枪射击敌人的场景。模拟场景中需要有战士(玩家)、敌人、枪三个对象,其中枪又包括弹夹,子弹两个对象。该案例的实现流程可以大致分为5个步骤:‹#›5应用举例111第1步:“classpeople”定义关于人类的类,并赋予战士和敌人的名字、血量和枪这三个类属性,构造了其装子弹,装弹夹的实例方法和实例属性,拿枪和开火的类方法和类属性,最后构造方法来显示其受伤后的血量。第2步:“classclip”创建弹夹的对象,构造defsaveBullet,defshotBullet和def__str__了三个类方法,赋予弹夹容量的类属性,判断是否有子弹,若没有子弹则安装子弹。再调用Bullet()类射击敌人子弹数减1。‹#›5应用举例112第3步:创建子弹的类classBullet,通过__init__构造方法和hurt()类方法赋予子弹伤害的类属性。定义子弹类的杀伤力(对敌人的伤害),Bullet()被调用后子弹打中敌人,构造的方法让敌人受到相应的伤害。第4步:通过“classgun”创建枪的类,先构造__init__和__str__方法赋予弹夹类属性,初始化无弹夹。再defmountingClip和defshoot两个类方法判断弹夹情况,用多个动态方法来将弹夹安装到枪中,射击敌人,其中bullet.hurt是实例属性,其余的都是类属性。第5步:实例化。调用上面所有的类。敌人出现,显示初始化的血量,战士装子弹和弹夹,然后拿枪射击敌人,显示敌人剩余血量。‹#›感谢聆听第一章概论西华大学数据分析基础与实践第四章数据分析概述XXX学校XXX2022目录Contents面对新冠病毒我们该如何抗役数据分析的概念和流程数据分析与相关概念的关系面对新冠病毒我们该如何抗役一求是明德卓越1.1面对新冠病毒我们该如何抗役117在疫情的防控方面,对疫情的数据进行分析,并从中挖掘出有用的信息,为我们的疫情防控起到了重要的参考作用。做好疫情防控工作,直接关系人民生命安全和身体健康,直接关系经济社会大局稳定,也事关我国对外开放的形势。在疫情防控方面,数据分析可以为我们提供诸多的服务。‹#›XXXXXXXXXXXXXXXXX1.1面对新冠病毒我们该如何抗役118实时绘制和更新疫情数据及其相关防护物品的地图,让大家随时能够了解到全国的疫情数据和身边的情况,可以根据身边的防护物品售卖情况有目的的购买防护物品。‹#›XXXXXXXXXXXXXXXXX1.1面对新冠病毒我们该如何抗役119在人员密集场所,采用“5G+热成像”技术实现了快速测温及体温监控,能够有效预防病毒在人群传播。‹#›XXXXXXXXXXXXXXXXX1.1面对新冠病毒我们该如何抗役120利用数据分析,对疫情传播途径进行溯源,对疫情趋势进行预测等。2022年2月12日上线的“云南抗疫情”扫码登记系统,就在疫情防控中发挥了重要作用。在2月20日,当天云南省新增确诊病例1例。系统分析人员迅速从数据中分析得知,这位患者此前曾到过一个农贸市场和一所医院,他在农贸市场和41个人有过接触;在医院与260人可能有过接触。大约1分钟,系统分析人员就分析出准确数据,并在第一时间提供给了疫情防控指挥部。当找出这些接触者后,指挥部及时通过短信、电话等方式,提示他们关注自身身体状况,及时居家隔离或到定点医院就诊,尽最大可能减少交叉传播。‹#›XXXXXXXXXXXXXXXXX1.1面对新冠病毒我们该如何抗役121在资源调配方面,数据分析也起到了重要作用。因为新冠肺炎疫情的传播,各地对医疗物资、生活物资等多维度资源需求短时间内激增。借助高价值数据,可以最大限度利用资源,实现系统谋划、顶层设计、动态调整。比如,“国家重点医疗物资保障调度平台”,对医用防护服、口罩、护目镜、药品等等重点医疗物资实施在线监测,全力保障重点医疗防控物资生产供应。借助大数据、人工智能、云计算等数字技术,打赢疫情防控阻击战,我们底气十足。‹#›XXXXXXXXXXXXXXXXX1.1面对新冠病毒我们该如何抗役122在复工复产方面,数据分析技术也为我们提供了重要保障。疫情防控不能松懈,复工复产同样不能迟缓。推动企业复工复产,既是打赢疫情防控阻击战的实际需要,也是经济社会稳定运行的重要保证。随着复工复产全力推进,多地依托疫情防控大数据平台,推出了居民健康登记系统和企业员工健康登记系统,实现了疫情防控的智能动态化监管。大数据发力,在为居民日常生活提供便利的同时,也形成了无遗漏、全覆盖、科学便捷的管控体系。比如健康码‹#›XXXXXXXXXXXXXXXXX数据分析的概念和流程二求是明德卓越2.1什么是数据分析124数据分析可以分为广义的数据分析和狭义的数据分析,广义的数据分析就包括狭义的数据分析和数据挖掘,我们常说的数据分析主要是指狭义的数据分析。狭义的数据分析:是指根据某种目的,用适当的统计分析方法及工具,对收集来的数据进行处理与分析,提取有价值的信息,发挥数据的作用的整个过程。数据分析主要实现针对问题的现状分析、原因分析和定量预测分析。数据分析需要首先明确分析的目标,先做假设,然后通过数据分析来验证假设是否正确,从而得到相应的结论。数据挖掘:是指从大量的数据中,通过统计学、人工智能、机器学习等方法,挖掘出未知的、且有价值的信息和知识的过程。它主要侧重于解决四类问题:分类、聚类、关联规则挖掘和预测(定量、定性)。‹#›2.2数据分析的一般流程125不同的数据分析问题的最终分析目标不同,但一般大致可以按照“数据获取与存储——数据预处理——数据建模与分析——数据 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 ”这样的步骤来实施一个数据分析项目。其中每一个数据分析的步骤又包含了很多需要完成的工作。‹#›2.2数据分析的一般流程126数据获取公开数据源网络爬虫其他方式:采集工具、数据交易、竞赛网站数据存储与提取数据创建、增、删、改数据查询、提取数据排序与索引数据分组与聚合‹#›2.2数据分析的一般流程127数据预处理数据预分析数据清洗数据集成数据变换数据规约数据分析描述性分析:结果是什么样的:统计学基础、科学计算基础探索性分析及可视化:数据中有
本文档为【数据分析基础与实践教学课件汇总整本书电子教案全套教学教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
春哥知识店铺
暂无简介~
格式:ppt
大小:12MB
软件:PowerPoint
页数:417
分类:理学
上传时间:2022-03-06
浏览量:0