资源描述
数据科学:理论、方法
与Python语言实践
教学目的
和要求
,教学进程
(含章节
教学内容、 学时分配、
教学方法、
辅助手段)
第4次课(4学时理论+4学时实验)
章 节 第4章函数、模块与组合数据类型
通过本章学习,掌握函数的定义、调用和参数传递;掌握lambda表达式的使用; 熟悉内置函数以及变量的作用域;掌握模块的导入和使用方法;掌握组合数据类型,包 括列表、元组、字典和集合;掌握字符串的使用方法。
重点:函数的定义、调用和参数传递;lambda表达式的使用;内置函数以及变量的作 用域;模块的导入和使用方法;组合数据类型,包括列表、元组、字典和集合;掌握字 符串的使用方法。
难点:函数的递归调用、参数传递;数据类型的灵活运用。
4.1函数的定义和调用(0.5学时)
1 .函数的定义
定义函数需要用def关键字实现。
2 .函数的调用
调用函数也就是执行函数。如果把创立的函数理解为一个具有某种用途的工具,那 么调用函数就相当于使用该工具。
3 、函数的递归调用
函数作为一种代码封装,可以被其他程序调用,当然也可以被函数内部代码调用。 这种函数定义中调用函数自身的方式称为递归。
4 . lambda表达式
lambda表达式,又称匿名函数,常用来表示内部仅包含1行表达式的函数。
5 .2函数的参数传递(0.5学时)
定义函数时都会选择有参数的函数形式,函数参数的作用是传递数据给函数,令其 对接收的数据进行具体的操作。
1 .函数值传递和引用传递
Python中,根据实参类型的不同,函数参数的传递方式可分为两种,分别为值传 递和引用(地址)传递。
(1)值传递:适用于实参类型为不可变类型(字符串、数字、元组)。
(2)引用(地址)传递:适用于实参类型为可变类型(列表、字典)。
2 .参数的位置传递
位置参数,有时也称必备参数,指的是必须按照正确的顺序将实参传到函数中,换 句话说,调用函数时传入实参的数量和位置都必须和定义函数时保持一致。
3 、参数的关键字传递
关键字参数是指使用形参的名称来确定输入的参数值。通过此方式指定函数实参 时,不再需要与形参的位置完全一致,只要将参数名写正确即可。
4 .参数的默认值传递Python允许为参数设置默认值,即在定义函数时,直接给形参指定一个默认值。
4.3 内置函数(0.3学时)
内置函数(built-in functions)又称系统函数,或内建函数,是指Python本身 所提供的函数任何时候都可以使用。
数学运算函数、反射函数和10函数。
4.4 变量作用域(0.5学时)
变量作用域,指变量的作用范围,即变量可以在哪个范围以内使用。有些变量可以 在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在for语句 内部使用。变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域 是不一样的。
1 .局部变量
在函数内部定义的变量,它的作用域仅限于函数内部,出了函数就不能使用了,我 们将这样的变量称为局部变量(local variable) o
当函数被调用时,Python会为其分配一个临时的存储空间,所有在函数内部定义 的变量都会存储在这个空间中。而在函数执行完毕后,这个临时存储空间随即会被释放 和回收,该空间中存储的变量自然也就无法再被使用。
2 .全局变量
除了在函数内部定义变量,Python还允许在所有函数的外部定义变量,这样的变 量称为全局变量(global variable) o与局部变量不同,全局变量的默认作用域是整 个程序,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。
3 .5模块(1学时)
Python提供了强大的模块支持功能,不仅Python标准库中包含了大量的标准模块, 而且还有大量的第三方模块,用户也可以开发自定义模块。
1 .模块的定义
模块(module)是将一系列代码有逻辑地组织到一起的集合体。把相关的代码分配 到一个模块里可以使代码更好用、更易懂。简单地说,模块就是一个Python文件,以 “py”作为文件的扩展名,能定义函数、类和变量。
2 .导入模块
使用Python进行编程时,用户可以使用Python现有的标准库或者第三方库。
3 .自定义模块
4 . math模块
math模块是Python提供的内置数学类函数模块,math模块不支持复数类型,仅支 持整数和浮点数运算。math模块一共提供了 4个数字常量和44个函数。
4.6组合数据类型与字符串(1.2学时).列表(list):创立列表、访问列表元素、更新列表;运算、函数和方法
1 .元组(tuple):创立元组、访问元组元素、修改元组、删除元组;运算、函数 和方法。
2 .字典(diet):创立字典、访问字典元素、删除字典;字典的内置函数和方法。
3 .集合(set):创立集合、访问集合、更新集合;集合的运算符和常用方法。
4 .字符串(str):字符串的访问、运算、格式设置。
~~1.如何定义带有可选参数的函数?
5 .函数一旦定义完成便会立即执行吗?
本章思考
题
6 .假设函数内部和外部定义了一个同名变量,如何在函数内部修改函数外部变量的 值?
7 .比拟元组和集合的区别,思考如何实现元组与集合的相互转换。
8 .两个集合分别是S1={1,3, 4,6}和S2=⑵5,6},请计算SI | S2.S1&S2、S1飞2和 S1-S2的值。
9 请比拟两个列表:Isl=[30, 1,2,0], 1 列表 1,21,133]。
10 如果列表 1s=[[2, 3, 7], [[3, 5], 25], [0,9]],那么 len(ls)的值是多少?
8.对于字典 d二{〃abc〃: 1, 〃qwe〃:3, 〃zxc〃:2}, len(d)的结果是什么?
主 要
参考资料
《数据科学:理论、方法与Python语言实践》
备 注
实训(4学时)
实训题目:练习使用函数、模块和组合数据类型
教学目的
和要求
,教学进程
(含章节
教学内容、 学时分配、
教学方法、
辅助手段)
第4次课(4学时理论+4学时实验)
章 节 第4章函数、模块与组合数据类型
通过本章学习,掌握函数的定义、调用和参数传递;掌握lambda表达式的使用; 熟悉内置函数以及变量的作用域;掌握模块的导入和使用方法;掌握组合数据类型,包 括列表、元组、字典和集合;掌握字符串的使用方法。
重点:函数的定义、调用和参数传递;lambda表达式的使用;内置函数以及变量的作 用域;模块的导入和使用方法;组合数据类型,包括列表、元组、字典和集合;掌握字 符串的使用方法。
难点:函数的递归调用、参数传递;数据类型的灵活运用。
4.1 函数的定义和调用(0.5学时)
1 .函数的定义
定义函数需要用def关键字实现。
2 .函数的调用
调用函数也就是执行函数。如果把创立的函数理解为一个具有某种用途的工具,那 么调用函数就相当于使用该工具。
3 .函数的递归调用
函数作为一种代码封装,可以被其他程序调用,当然也可以被函数内部代码调用。 这种函数定义中调用函数自身的方式称为递归。
4 . lambda表达式
lambda表达式,又称匿名函数,常用来表示内部仅包含1行表达式的函数。
4.2 函数的参数传递(0.5学时)
定义函数时都会选择有参数的函数形式,函数参数的作用是传递数据给函数,令其 对接收的数据进行具体的操作。
1 .函数值传递和引用传递
Python中,根据实参类型的不同,函数参数的传递方式可分为两种,分别为值传 递和引用(地址)传递。
(1)值传递:适用于实参类型为不可变类型(字符串、数字、元组)。
(2)引用(地址)传递:适用于实参类型为可变类型(列表、字典)。
2 .参数的位置传递
位置参数,有时也称必备参数,指的是必须按照正确的顺序将实参传到函数中,换 句话说,调用函数时传入实参的数量和位置都必须和定义函数时保持一致。
3 .参数的关键字传递
关键字参数是指使用形参的名称来确定输入的参数值。通过此方式指定函数实参 时,不再需要与形参的位置完全一致,只要将参数名写正确即可。
4 .参数的默认值传递Python允许为参数设置默认值,即在定义函数时,直接给形参指定一个默认值。
4.3 内置函数(0.3学时)
内置函数(built-in functions)又称系统函数,或内建函数,是指Python本身 所提供的函数任何时候都可以使用。
数学运算函数、反射函数和10函数。
4.4 变量作用域(0.5学时)
变量作用域,指变量的作用范围,即变量可以在哪个范围以内使用。有些变量可以 在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在for语句 内部使用。变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域 是不一样的。
1 .局部变量
在函数内部定义的变量,它的作用域仅限于函数内部,出了函数就不能使用了,我 们将这样的变量称为局部变量(local variable) o
当函数被调用时,Python会为其分配一个临时的存储空间,所有在函数内部定义 的变量都会存储在这个空间中。而在函数执行完毕后,这个临时存储空间随即会被释放 和回收,该空间中存储的变量自然也就无法再被使用。
2 .全局变量
除了在函数内部定义变量,Python还允许在所有函数的外部定义变量,这样的变 量称为全局变量(global variable) o与局部变量不同,全局变量的默认作用域是整 个程序,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。
3 .5模块(1学时)
Python提供了强大的模块支持功能,不仅Python标准库中包含了大量的标准模块, 而且还有大量的第三方模块,用户也可以开发自定义模块。
1 .模块的定义
模块(module)是将一系列代码有逻辑地组织到一起的集合体。把相关的代码分配 到一个模块里可以使代码更好用、更易懂。简单地说,模块就是一个Python文件,以 “py”作为文件的扩展名,能定义函数、类和变量。
2 .导入模块
使用Python进行编程时,用户可以使用Python现有的标准库或者第三方库。
3 .自定义模块
4 . math模块
math模块是Python提供的内置数学类函数模块,math模块不支持复数类型,仅支 持整数和浮点数运算。math模块一共提供了 4个数字常量和44个函数。
4.6组合数据类型与字符串(1.2学时).列表(list):创立列表、访问列表元素、更新列表;运算、函数和方法
1 .元组(tuple):创立元组、访问元组元素、修改元组、删除元组;运算、函数 和方法。
2 .字典(diet):创立字典、访问字典元素、删除字典;字典的内置函数和方法。
3 .集合(set):创立集合、访问集合、更新集合;集合的运算符和常用方法。
4 .字符串(str):字符串的访问、运算、格式设置。
~~1.如何定义带有可选参数的函数?
5 .函数一旦定义完成便会立即执行吗?
本章思考
题
6 .假设函数内部和外部定义了一个同名变量,如何在函数内部修改函数外部变量的 值?
7 .比拟元组和集合的区别,思考如何实现元组与集合的相互转换。
8 .两个集合分别是 S1 ={1,3, 4,6}和 S2={2, 5,6},请计算 S1|S2、S1&S2、S1 飞2 和 S1-S2的值。
9 请比拟两个列表:Isl=[30, 1,2,0], 1 列表 1,21,133]。
10 如果列表 1s=[[2, 3, 7], [[3, 5], 25], [0,9]],那么 len(ls)的值是多少?
8.对于字典 d二{〃abc〃: 1, 〃qwe〃:3, 〃zxc〃:2}, len(d)的结果是什么?
主 要
参考资料
《数据科学:理论、方法与Python语言实践》
备 注
实训(4学时)
实训题目:练习使用函数、模块和组合数据类型
第5次课(2学时理论+2学时实验)
早下
第5章文件操作
教学目的 和要求
通过本章学习,掌握异常的类型以及异常处理的方法;理解常见的文件类型及其文 件格式;掌握文件读取的流程;分别掌握文本文件、CSV格式的文件以及JSON格式的 文件的读取和写入的方法。
重占
难点
重点:异常的类型以及异常处理的方法;文件读取的流程;文本文件、csv格式的文件 以及JSON格式的文件的读取和写入的方法。
难点:异常的处理解决实际问题。
,教学进程
(含章节
教学内容、
学时分配、
教学方法、
辅助手段)
5.1错误处理(1学时)
错误一般包含两类:一类是Python可以帮我们检查的,称为语法错误;另一类是 Python检查不出来的,称为异常。
1 •错误
语法错误是指程序的语法有问题,编译器能够检查出来。
语法上没有错误但是运行时会出现的问题,称为异常。
2 .异常处理
3 .2文件读写(1学时)
在进行数据分析的过程中,我们会操作各种类型的文件,并从中读写信息。这些文 件的类型包括txt、csv、xls、JSON等。Python可以通过义件读写函数,将文件中的 数据调入内存,以便在内存中对数据进行处理。
1 .读写文本文件
file类提供了程序的翻开函数open。、关闭函数close()、读取函数read。和写 入函数write () o
2 .读写csv文件
3 .读写JSON文件
本章思考 题
1 .为什么有些错误Python语言能够帮我们检查出来,而有些错误Python语言没 方法帮我们检查出来?
2 . Python语言初学者常犯的错误包括哪些?
3 .为什么在存储大量数据的过程中,会使用csv文件格式而不是txt文件格式? csv文件格式有什么优点?
主 要 参考资料
《数据科学:理论、方法与Python语言实践》
备 注
实训(2学时)
实训题目:将用户名和密码保存在文件中
第6次课(4学时)章节 第6章数据采集
L掌握 的工作原理,了解 请求及 响应的消息结构;
教学目的
和要求
2,掌握使用XPath解析HMTL元素的方法;
3 ,熟悉数据采集的流程;
4,能使用Scrapy框架编写爬虫程序;
5.了解网站的反爬虫措施,并掌握应对方法。
重占
八、、
难点
重点:掌握使用XPath解析HMTL元素的方法。 难点:能使用Scrapy框架编写爬虫程序。
6.1 请求概述(0.5学时)
URL (统一资源定位符):用于完整描述Internet上资源地址的一种标识 方法。 其基本格式为: protocol ://host[: port#]/path/..../[?query-string][#anchor]oprotocol:协议(例如: > s> ftp);
host:服务器的IP地址或者域名;
教学进程
(含章节 教学内容、 学时分配、 教学方法、 辅助手段)
port#:服务器的端口(可选,省略时使用协议的默认端口, 的默认 端口为80);path:访问资源的路径;
query-string:可选,用于给动态网页传递参数,可有多个参数,用 符号分隔,各个参数的名和值用“二”连接;anchor:锚(跳转到网页的指定锚点位置)。
请求
请求消息分为三个局部,第一局部叫请求行,第二局部叫请求头部,第 三局部叫请求体。请求头部和请求体之间有个空行。
响应
响应(Response)消息由服务器端返回给客户端,其结构也分为三局部: 响应状态行、响应头部和响应体。
6.2 HTML、DOM 树结构和 Xpath (0.25 学时)
HTML简述〈标签名属性二”属性值“属性二"属性值”内容〈/标签名〉
XPath路径表达式及其说明
表 达 式
描 述
Nodename
选取此节点的所有子节点
/
从根节点选取
//
从匹配选择的当前节点选择文档中的节点,而不考虑它们的位i
置
•
选取当前节点
• •
选取当前节点的父节点
@
选取属性
6.3 Scrapy数据采集入门(0.25学时) Scrapy框架结构
6.4 Scrapy 实例(0.5 学时)
实例一:在京东网站中以关键字“华为”进行搜索后,爬取搜索结果第 一页中的产品名称、产品价格、产品链接以及产品店铺名称。
实例二:在京东网站中以关键字“华为”进行搜索后,爬取所有搜索页 中的产品名称、产品价格、产品链接、产品店铺名称以及产品详细信息。
6.5 Scrapy应对反爬虫程序(0.5学时)
爬虫的检测方法:
1 .检查header信息
2 .统计IP访问频率
3 .隐藏链接应对反爬虫的对策:
1 .应对header中User-Agent与Referer反爬虫检查.应对header中Cookies的反爬虫检查
2 .应对IP访问频率限制反爬虫实例:
1 .自定义请求头模拟浏览器请求.模拟 Cookies
本章思考
题
主 要
参考资料
2 .更改请求IP地址
1 .如何获取网页异步加载的数据;
2 .如何判定网站反爬虫的方法。
[1]张健,张良均.Python编程基础[M].北京:人民邮电出版社.2018
[2]黄红梅,张良均.Python数据分析与应用北京:人民邮电出版 社.2018[3]张良均.Python数据分析与挖掘实战(第2版)[M].北京:机械工业 出版社.2019
M第1次课(1学时理论+1学时实验)
章节第1章数据科学概述
教学目的通过本章的学习,掌握数据的定义、分类和开展历程,了解数据与数据科学的关系,
和要求 掌握数据科学中常出现的概念,并且了解其在日常生活中发挥的积极作用。
重点:数据的定义、分类和开展历程;数据科学工作流程 难点:数据科学在经济管理领域的应用.1数据(0.3学时)
数据是信息的表现形式和载体,可以是符号、文字、数字、语音、图像、视频等; 而信息是数据的内涵,信息加载于数据之上,对数据作具有含义的解释。
1 .数据的定义和分类
数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及 相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。 它不仅指狭义上的数字,还可以是具有一定意义的文字、字母、数字符号的组合、图形、 图像、视频、音频等,也是客观事物的属性、数量、位置及其相互关系的抽象表示。
教学进程
(含章节 教学内容、 学时分配、 教学方法、 辅助手段)
为了便于数据的收集与分析,数据通常按照性质、表现形式、结构三个方面来分类。
2 .数据产生方式的变革
数据库的从无到有并继续开展,将人类社会的数据产生方式大致分为了三个阶段: 数据库诞生阶段、互联网开展阶段和物联网开展阶段。
3 .2走进数据科学(0.5学时)
在数据爆发式增长的时代,在理论层面,数据利用的理论体系正逐步形成,因而数 据科学的诞生成为必然;在实践层面,随着数据科学的理论架构逐步成熟,对数据的加 工提炼和挖掘技术也相伴而生。
4 .数据科学的开展历程
数据科学伴随着信息技术的逐步开展而渐渐羽翼饱满,数据科学从萌芽到成为一门 完整的科学,经历了漫长的过程。
5 .数据科学基础数据科学就是一门通过系统性研究来获取与数据相关的知识体系的科学。这个定义 有以下两个层面的含义。(1)研究数据本身,以及数据的类型、结构、状态、属性及 变化形式和变化规律。(2)通过对数据的研究,为自然科学和社会科学的研究提供一 种被称为科学研究的新的数据方法,其目的在于揭示自然界和人类行为的现象和规律。
数据科学的本质。将事物认知的关系量化,把普遍使用的科学思维方式应用到数据 研究上,使其成为一门拥有完整体系的学科。这就是数据科学要解决的本质问题。
数据科学的基础体系。数据科学主要以统计学、机器学习、数据可视化以及某一领 域的知识与经验为理论基础,其主要研究内容包括数据科学基础理论、数据预处理、数 据计算和数据管理。
第7次课(4学时一)
章节
第7章numpy数值计算
教学目的 和要求
1 .掌握数组的创立及索引;
2 ,掌握数组的基本数学运算;
3 ,掌握数组的排序与统计函数;
4 .熟悉矩阵的创立及运算;
5 .了解读写文件的方法。
重占
八、、
难点
重点:掌握数组的基本数学运算。 难点:矩阵的创立及运算。
教学进程
(含章节 教学内容、 学时分配、 教学方法、 辅助手段)
7.1 numpy数组概述(0.25学时)
numpy数组的特点及属性
属 性
说 明
ndim
返回into表示数组的维数
shape
返回tupleo表示数组的尺寸,对于n行m列的矩阵,shape 为(n,m )
size
返回into表示数组的元素总数,等于数组shape的乘积
dtype
返回data-type。描述数组中元素的类型
itemsize
返回into表示数组的每个元素的大小(以字节为单位)。例 如,一个元素类型为float64的数组的itemsize属性值为8 (float64占用64bit ,每个字节长度为8bit ,所以,占用8个 字节)。又如,一个元素类型为complex32的数组的itemsize 属性值为4 ,即32/8
7.2 数组形状操作 (0.25学时)
用 reshape()> resize()> ravel()> flatten()> vstack()> hstack()等函数改变 数组的“形状”。
【例7-5]利用reshape。函数改变数组维度。
arrl3=np.arange(12)#创立一维数组
print(''创立的维数组:=arrl3) #显小维数组
print("改变数组的形状:、己加侬.reshape⑶4)) #设置数组的形状
print(“数组改变形状后的维度:\arrl3.reshape⑶4).ndim) #显示reshape 后数组的维度
print(“原数组的维度:,airl3.ndim) #reshape不会改变原数组
7.3 数组数据获取:索引、切片、复制及条件 (0.25学时)
【例7-10】一维数组的索引及切片。
arr=np.arange(6)
prime数组中的第6个元素为:。arr[5])#用整数作为下标可以获取数
组中的某个元素
print。数组中的第4〜5个元素为:曾"[3:5])#用范围作为下标获取数组的 一个切片,左闭右开,即包括arr[3],不包括air[5]
print(嗷组中的第1~5个元素为:,,arr[:5]) #省略开始下标,表示从arr[O] 开始
prints数组中的最后一个元素为:曾M-1]) #下标可以使用负数,-1表示 从数组最后往前数的第一个元素
print('arr[l:-l:2]的切片结果为:,加「[1:-1:2]) #范围中的第三个参数表示步 长,2表示隔1个元素取1个元素【例7・111多维数组的索引及切片。
import numpy as nparr=np.arange(15).reshape(3,5)#创立二维数组 3 行 5 歹U
print。创立的二维数组为:\n',arr)
print。第0行中第3列和第4列的索引结果为:\n,,arr [0,3:5]) #索引第0行中第3列 和第4列的元素
print(第1~2行中第2~4列的索引结果为:\n',arr [1:,2:]) #索引第1〜2行中第2~4 列中的元素print。第2列中元素的索引结果为:\n',arr [:,2])#索引第2列中的元素
7.4数组运算 (0.25学时).四那么运算
1 .比拟运算.逻辑运算
2 .5数组排序及统计分析(0.25学时)【例7-19]利用sort。函数进行数组排序。
import numpy as nparr=np.array([[3,2,l],[l,2,3],[2,2,2]])
print('创立的数组为:\n\arr)
print。按行排序的结果为:\n,,np.sort(arr,axis=l)) #默认是按行排序,axis 可以省略
print('按列排序的结果为:\n',np.sort(arr,axis=0))arr.sort(axis=l)
print('使用数组的sort。函数会改变原始数组:,尸⑺【例7-21]利用unique。函数去掉重复数据。
arrl=np.array([lz2,3,4,5,4z3,2,l])arr2=np.array(『小王'「小周小李’」小黄小周'])
print。创立的数组1为:,,arrl)print。去重后的数组 1 为:,,np.unique(arrl))
print。创立的数组2为:,加⑵print('去重后的数组2为:,,np.unique(ar⑵)
统计函数及其说明
函
数
说 明
np.min(arr,axis)
按照轴的方向计算最小值
np.max(arr,axis)
按照轴的方向计算最大值
np.mean(arr,axis)
按照轴的方向计算均值
np.median(ari;axis)
按照轴的方向计算中位数
np.sum(arr;axis)
按照轴的方向计算和
np.std(arrzaxis)
按照轴的方向计算标准差
np.var(arr,axis)
按照轴的方向计算方差
np.cumsum(arr;axis)
按照轴的方向计算累计和
np.cumprod(arr/axis)
按照轴的方向计算累计乘积
7.6矩阵创立及运算(0.5学时)
【例7-24】 利用mat。、matrix()> bmat()函数创立矩阵。
x=np.array([[l/2,3],[4,5,6],[7/8,9]]) #创立的数组 x
y=np.mat("l,2,3;4,5,6;7,8,9") #利用mat()函数创立的矩阵y/吏用;分隔
z二np.matrix([[9B7U654]I321]]) #利用 matrix。函数创立的矩阵 z b=np.bmat("x y;y z") #利用bmat()函数创立的矩阵,将小矩阵组合成大 矩阵
print('创立的数组为:\n»
print。利用mat()创立的矩阵为:\n',y)
print。利用matrix。创立的矩阵为:\n',z)
print。利用bmat()创立的矩阵为:\n',b)
【例7-25]矩阵的基本运算例如。
matrl=np.mat(,,l,2,3;4,5,6;7/8,9")
matr2=matrl*3 #矩阵与数相乘
print。矩阵 1 为:\n\matrl)
print。矩阵2为:\n'zmatr2) #矩阵与数相乘
print。矩阵相加为:\n',matrl+matr2) #矩阵相加
print('矩阵相减为:VCmatn-matrl) #矩阵相减
print。矩阵相乘为:\n',matr2*matrl) #矩阵相乘
print。矩阵相除为:\n,,matr2/matrl) #矩阵相除
【例7-26]矩阵的转置、共班及逆矩阵例如。
matrl=np.mat("l/2/3;4,5,6;7,8,9")
print('创立的矩阵为:\n\matrl)
print('矩阵转置结果为:\n\matrl.T) #矩阵转置
print(,逆矩阵结果为:Xn;matrl.l) #逆矩阵
numpy中有关线性代数的重要函数
函 数
说 明
函 数
说 明
np.zeros
生成零矩阵
np.ones
生成所有元素为1的矩 阵
np.eye
生成单位矩阵
np.transpos e
矩阵转置
np.dot
计算两个数组的点积
np.inner
计算两个数组的内积
7.7读写文件 (0.25学时)L文本数据读写函数 savetxt()> loadtxt()> genfromtxt()
本章思考
题
主 要
参考资料
2,二进制文件读写函数save。及load()
1 .与Python提供的列表相比,numpy数组更多被使用的原因;
2 . numpy中向量与矩阵的如何转换。
[1]张健,张良均.Python编程基础[M].北京:人民邮电出版社.2018
[2]黄红梅,张良均.Python数据分析与应用北京:人民邮电出版 社.2018[3]张良均.Python数据分析与挖掘实战(第2版)[M].北京:机械工业 出版社.2019
第8次课(4理论+2实验学时)
zte.-4-R
早下
第8章 数据处理:pandas统计分析
教学目的 和要求
1 .了解pandas的基本数据结构、DataFrame的常用属性;
2 ,掌握常见的外部数据读取方法;
3 .掌握数据清洗与集成的基本方法;
4 .掌握统计分析的基本方法;
5 .熟悉时间数据处理方法;
6 ,掌握透视表与交叉表的创立方法。
点点 重难
重点:掌握数据清洗与集成的基本方法。 难点:掌握透视表与交叉表的创立方法。
教学进程
(含章节 教学内容、 学时分配、 教学方法、 辅助手段)
首先介绍pandas基本操作和数据处理与分析基本思路,然后重点介绍 DataFrame结构的操作以及缺失值、重复值、异常值的处理,以及分组计算、 数据差分等内容。
8.1 pandas的数据结构(0.25学时)
Series对象的参数及说明
参 数
说 明
data
读写的数据,包含Series对象,可以是numpy数组或类数组对象、 字典diet对象或者一系列标量值
index
一维类数组对象或一维索引对象;索引对象必须和data具有相同 的长度,默认为Rangelndex(0,l,2/--,n);如果data是一个字典对象, 并且同时提供了 index,那么index会覆盖字典的键值
dtype
可为numpy.dtype或者None;假设为None,那么自动推断出data的类 型
name
给创立的对象命名
copy
指明是否复制输入数据;为boolean类型;默认为False
fastpath
是一个内部使用的参数;开发者可忽略
无参数
创立一个长度为。的空序列
8.2 DataFrame的基础操作(0.25学时)
DataFrame的常用属性有values、index、columns和dtypes,分别可以获 取元素、索引、列名和类型。可以使用append。、drop。方法向DataFrame 中添加、删除数据。
8.3 读/写外部数据(0.25学时)
L读/写数据库数据
【例 8-13] 利用 read_sql_table()> read_sql_query()> read_sql()函数读 取数据库中的数据。
import pandas as pd
from sqlalchemy import create_engine
engine=create_engine('mysql+pymysql://root:root@localhost:3306/zzl?char set=utf8')
#创立一个MySQL连接,用户名为root,密码为root,地址为127.0.0.1 或localhost,数据库名称为zzl (在MySQL中运行本书配套资料中的“zzl.sql” 文件,生成“zzl”数据库),编码为utf-8,使用pymysql这个包来连接数据 库
,,True)# 设置歹 U 对齐
pd.set_option('display.unicode.east_asian_width',True) # 设置列对齐
detaill=pd.read_sql_table('课程con=engine)# 利| 用pd.read_sql_table()读取MySQL数据库中的课程表
detail2=pd.read_sql_query('select*from 课 程,/con=engine) # 禾Ll 用 pd.read_sql_query()读取MySQL数据库中的课程表
detail3=pd.read_sql('select*from 课程con=engine) #利用 pd.read_sql() 读取MySQL数据库中的课程表
detail4=pd.read_sql('课程’‘con=engine)#利用 pd.read_sql()读取 MySQL数据库中的课程表一一
print(detaill)
print(detail2)
print(detail3)
print(detail4)
【例8-14]使用to_sql()方法将数据存入数据库。
enginel=create_engine('mysql+pymysql://root:root@localhost:3306/zzl?cha rset=utf8,)
#创立一个MySQL连接,用户名为root,密码为root将两行合并为一行
#地址为或localhost,数据库名称为zzl,编码为utf-8
detaill二pd.read_sql('课程’‘con二enginel) #读取 zzl 数据库中的“课程 1” 表
print(detaill)
detaill.to_sql('课程 l',con=enginel,index=False,if_exists=,replace') #将数 据写入zzl数鬼库中的课程1表一
2 .读/写文本文件
【例8-15]使用read_csv()函数读取文本文件。
import pandas as pd
detail = pd.read_csv('课程.csv:sep='\t',encoding ='utf8') #读取本书配套资 料中的“课程” Av文件
print(detail)
【例8-16]使用to_csv()函数存储文本文件(接例8-15) o
detail.to_csv('课程 l.csv,,sep=';,,index=False/encoding=,utf8,)
3,读/写Excel文件
【例8-17]使用read_excel()函数读取Excel文件。
kcdetail二pd.read_excelC课程.xlsx) #读取本书配套资料中的“课程.xlsx” 文件中的第1个工作表
kcdetail2=pd.read_excel(,W@.xlsx,,sheet_name='Sheet2,) # 读取本书配套 资料中的“课程.xlsx”文件中的sheet2表
【例8-18]使用to_excel()函数存储Excel文件。
kcdetail=pd.read_excel('课程.xlsx')#读取本书配套资料中的“课程.xlsx” 文件中的第1个工作表print(kcdetail)
kcdetail.to_excel('课程2.xlsx')#将读入的本书配套资料中的“课程.xlsx”文件而容写入“课程2.xlsx”文件
8.4 pandas的数据预处理 (0.5学时)
L数据清洗
重复数据的检测与处理drop_duplicates()方法的常用参数及其说明
参数名称
说 明
subset
接收string或sequence ;表示进行去重的列;默认为None , 表示全部列
keep
接收特定的strin
展开阅读全文