python与大数据
Python拥有很丰富的库,结合在编程方面的强大功能,可以只使用Python这一种语言去构建以数据为中心的应用程序。同时,Python是一个混合体,丰富的工具集使它介于传统的脚本语言和系统语言之间。Python具有所有脚本语言所具有的简单和易用的特征,并且拥有许多编译语言的工具。此外,Python还提供了与数学计算相关的类库,如NumPy、SciPy、SymPy、StatsModels等。
NumPy
NumPy是Numerical Python的简称,是Python实现科学计算的基础包。NumPy主要提供以下功能。
(1)快速高效的多维数组对象ndarray。
(2)可对数组执行元素级计算及直接对数组执行数学运算的函数。
(3)用于读写硬盘上基于数组的数据集的工具。
(4)行列式计算、矩阵运算、特征分解、奇异值分解的函数与方法。
(5)将C、C++、Fortran代码集成到Python的工具。
SciPy
SciPy是一个基于Python的开源库,是一组专门解决科学计算中各种基本问题的模块的集合,经常与NumPy、StatsModels、SymPy这些库一起使用。SciPy的不同子模块有不同的应用,如插值、积分、优化、图像处理等。SciPy主要包含了8个模块
SymPy
SymPy的全称为Symbolic Python,是由纯Python语言编写的一个用于符号运算的库,能够与其他科学计算库相结合。符号化的计算采用的是数学对象符号化的计算方式,使用数学对象的精确标识,而不是近似的,计算结果可以为一个数学表达式。它的目标在于成为一个富有特色的计算机代数系统,同时保证自身的代码尽可能简单,且易于理解,容易扩展。
StatsModels
StatsModels是一个与统计相关的Python库。它在统计计算方面可以视为SciPy的补充,包括数据的描述性统计、统计模型的估计和推断等,对每一个模型都会生成一个对应的统计结果。统计结果会和现有的统计包进行对比,以保证其正确性。
python优点
Python之所以受到大家的欢迎,是因为它有很多优秀“品质”。
1 简单、易学、免费、开源:Python简单、易学。我们可以自由发布其复制版本,阅读、修改其源代码,将其(部分)用于新软件中。
2 解释型:Python是边解释边执行的,Python解释器会将源代码转换为中间字节码形式,然后将其解释为机器语言并执行。
3 可移植:Python解释器已被移植在许多平台上,Python程序无须经过修改就可以在多个平台上运行。
4 代码规范:Python所采用的强制缩进的方式,使得其代码具有极佳的可读性。
5 面向对象:与C++和Java等相比,Python以强大而简单的方式实现了面向对象编程。
6 胶水语言:标准版本的Python调用C语言,并可以借助C语言的接口驱动调用所有编程语言。
7 丰富的库:Python的标准库种类繁多,可以帮助处理各种工作,我们不需要安装就可以直接使用这些库。
8 动态类型:Python不会检查数据类型,在声明变量时不需要指定数据类型。
安装python 环境
- intellij idea
- 终端调试
python 基础知识
Python中标识符的命名规则如下。
1 区分大小写:Myname与myname是两个不同的标识符。
2 首字符可以是下画线(_)或字母,但不能是数字。
3 除首字符外的其他字符必须是下画线、字母和数字。
4 关键字不能作为标识符。
5 不要使用Python的内置函数作为自己的标识符。
Python 特性
关键字:33 个关键字
变量
语句:在Python中,一行代码表示一条语句,在一般情况下语句结束时不加分号。
注释:在使用#(井号)时,#位于注释行的开头,#后面有一个空格,接着是注释的内容。
数据类型
在Python中有6种主要的内置数据类型:数字、字符串、列表、元组、集合和字典。列表、元组、集合和字典可以容纳多项数据,在本书中把它们统称为容器类型的数据。
Python中的数字类型有4种:整数类型、浮点类型、复数类型和布尔类型。需要注意的是,布尔类型也是数字类型,它事实上是整数类型的一种。
整数类型
浮点类型
复数类型
布尔类型
数字类型的相互转换:隐式类型的转换和显式类型的转换
运算符
算术运算符
比较运算符
逻辑运算符
位运算符
赋值运算符
运算符的优先级
程序流程控制
分支语句 if
循环语句: while for
跳转语句:break、continue
容器类型的数据
Python内置的数据类型如序列(列表、元组等)、集合和字典等可以容纳多项数据,我们称它们为容器类型的数据。
序列
序列(sequence)是一种可迭代的、元素有序的容器类型的数据。
序列包括列表(list)、字符串(str)、元组(tuple)和字节序列(bytes)等。
序列的索引操作
加和乘操作:加(+)和乘()运算符也可以用于序列中的元素操作。加(+)运算符可以将两个序列连接起来,乘()运算符可以将两个序列重复多次。
切片运算符的语法形式为[start:end:step]。其中,start是开始索引,end是结束索引,step是步长(切片时获取的元素的间隔,可以为正整数,也可以为负整数)。
列表
列表(list)是一种可变序列类型,我们可以追加、插入、删除和替换列表中的元素。
创建列表
创建列表有两种方法。
1 list(iterable)函数:参数iterable是可迭代对象(字符串、列表、元组、集合和字典等)。
2 [元素1,元素2,元素3,⋯]:指定具体的列表元素,元素之间以逗号分隔,列表元素需要使用中括号括起来。
追加元素
列表是可变的序列对象,列表可以追加元素。
1 在列表中追加单个元素时,可以使用列表的append(x)方法。
2 在列表中追加多个元素时,可以使用加(+)运算符或列表的extend(t)方法。
插入元素
想向列表中插入元素时,可以使用列表的list.insert(i,x)方法,其中,i指定索引位置,x是要插入的元素。
替换元素
想替换列表中的元素时,将列表下标索引元素放在赋值符号(=)的左边,进行赋值即可。
删除元素
想在列表中删除元素时,可使用列表的list.remove(x)方法,如果找到匹配的元素x,则删除该元素,如果找到多个匹配的元素,则只删除第一个匹配的元素。
元组
元组(tuple)是一种不可变序列类型。
创建元组
创建元组时有两种方法。
1 tuple(iterable)函数:参数iterable是可迭代对象(字符串、列表、元组、集合和字典等)。
2 (元素1,元素2,元素3,⋯):指定具体的元组元素,元素之间以逗号分隔。对于元组元素,可以使用小括号括起来,也可以省略小括号。
元组拆包
创建元组,并将多个数据放到元组中,这个过程被称为元组打包。
与元组打包相反的操作是拆包,就是将元组中的元素取出,分别赋值给不同的变量。
集合
集合(set)是一种可迭代的、无序的、不能包含重复元素的容器类型的数据。
创建集合
1 set(iterable)函数:参数iterable是可迭代对象(字符串、列表、元组、集合和字典等)。
2 {元素1,元素2,元素3,⋯}:指定具体的集合元素,元素之间以逗号分隔。对于集合元素,需要使用大括号括起来。
修改集合
修改集合类似于修改列表,可以向其中插入和删除元素。修改可变集合有如右所示的常用方法。
add(elem):添加元素,如果元素已经存在,则不能添加,不会抛出错误。
remove(elem):删除元素,如果元素不存在,则抛出错误。
clear():清除集合。
字典
字典(dict)是可迭代的、通过键(key)来访问元素的可变的容器类型的数据。
字典由两部分视图构成:键视图和值视图。键视图不能包含重复的元素,值视图能。在键视图中,键和值是成对出现的。
创建字典
我们可以通过以下两种方法创建字典。
1 dict()函数。
2 {key1:value1,key2:value2,...,key_n:value_n}:指定具体的字典键值对,键值对之间以逗号分隔,最后用大括号括起来。
修改字典
字典可以被修改,但都是针对键和值同时操作的,对字典的修改包括添加、替换和删除。
访问字典视图
items():返回字典的所有键值对视图。keys():返回字典键视图。
values():返回字典值视图。
字符串
字符串的表示方式
字符串有三种表示方式:普通字符串、原始字符串和长字符串。
普通字符串
普通字符串指用单引号(')或双引号(")括起来的字符串。
转义字符
原始字符串
长字符串
如果要使用字符串表示一篇文章,其中包含了换行、缩进等排版字符,则可以使用长字符串表示。对于长字符串,要使用三个单引号(''')或三个双引号(""")括起来。
字符串与数字的相互转换
- 将字符串转换为数字,可以使用int()和float()实现,如果成功则返回数字,否则引发异常。
- 将数字转换为字符串,可以使用str()函数,str()函数可以将很多类型的数据都转换为字符串。
- 格式化字符串:使用占位符,要想将表达式的计算结果插入字符串中,则需要用到占位符。对于占位符,使用一对大括号({})表示。
函数
定义函数:
def funciton(param):
pass
调用函数
使用位置参数调用函数
在调用函数时传递的实参与定义函数时的形参顺序一致,这是调用函数的基本形式。
使用关键字参数调用函数
在调用函数时可以采用“关键字=实参”的形式,其中,关键字的名称就是定义函数时形参的名称。
参数的默认值
可变参数
基于元组的可变参数(*可变参数):
*可变参数在函数中被组装成一个元组。
基于字典的可变参数(**可变参数)
**可变参数在函数中被组装成一个字典。
函数中变量的作用域
变量可以在模块中创建,作用域(变量的有效范围)是整个模块,被称为全局变量。变量也可以在函数中创建,在默认情况下作用域是整个函数,被称为局部变量。
理解函数类型
函数类型的数据与其他类型的数据是一样的,任意类型的数据都可以作为函数返回值使用,还可以作为函数参数使用。因此,一个函数可以作为另一个函数返回值使用,也可以作为另一个函数参数使用。
过滤函数filter()
filter()函数用于对容器中的元素进行过滤处理。
映射函数map()
map()函数用于对容器中的元素进行映射(或变换)。例如:我想将列表中的所有元素都乘以2,返回新的列表。
类与对象
面向对象:封装、继承、多态
如何定义类
创建对象
类的成员
构造方法:init
类变量:类变量是属于类的变量,不属于单个对象。银行利率
类方法:类方法与类变量类似,属于类,不属于个体实例。在定义类方法时,它的第1个参数不是self,而是类本身。类方法定义:@classmethod
私有变量:成为私有变量,则在变量前加上双下画线()即可。
私有方法:私有方法与私有变量的封装是类似的,在方法前加上双下画线()就是私有方法了。示例代码如下
继承:在Python中声明子类继承父类,语法很简单,定义类时在类的后面使用一对小括号指定它的父类就可以了。在Python中,当子类继承多个父类时,如果在多个父类中有相同的成员方法或成员变量,则子类优先继承左边父类中的成员方法或成员变量,从左到右继承级别从高到低。
多态性也是面向对象重要的基本特性之一。“多态”指对象可以表现出多种形态。
异常处理
try-except语句
异常捕获是通过try-except语句实现的,基本的try-except语句的语法如下。
多个except代码块
多条语句可能会引发多种不同的异常,对每一种异常都会采用不同的处理方式。针对这种情况,我们可以在一个try后面跟多个except代码块。
使用finally代码块释放资源
自定义异常处理
继承Exception,抛出异常是使用raise。
内置模块
math
datetime
date
time
re : 正则表达式
文件读写
使用文件之前要先将文件打开,这通过open()函数实现
open()函数中的参数还有很多,这里介绍4个常用参数,这些参数的含义如下。
1.file参数
file参数用于表示要打开的文件,可以是字符串或整数。如果file是字符串,则表示文件名,文件名既可以是当前目录的相对路径,也可以是绝对路径;如果file是整数,则表示一个已经打开的文件。
2.mode参数
mode参数用于设置文件打开模式,用字符串表示,例如rb表示以只读模式打开二进制文件。用于设置文件打开模式的字符串中的每一个字符都表示不同的含义,对这些字符的具体说明如下。
t:以文本文件模式打开文件。
b:以二进制文件模式打开文件。
r:以只读模式打开文件。
w:以只写模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则覆盖文件的内容。
x:以独占创建模式打开文件,如果文件不存在,则创建并以写入模式打开;如果文件已存在,则引发FileExistsError异常。
a:以追加模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则在文件末尾追加。
+:以更新(读写)模式打开文件,必须与r、w或a组合使用,才能设置文件为读写模式。
关闭文件
在打开文件后,如果不再使用该文件,则应该将其关闭,会用到close()方法。
在with as代码块中关闭文件
with as提供了一个代码块,在as后面声明一个资源变量,在with as代码块结束之后自动释放资源。
读写文本文件
read(size=-1):从文件中读取字符串,size限制读取的字符数,size=-1指对读取的字符数没有限制。
readline(size=-1):在读取到换行符或文件尾时返回单行字符串。如果已经到文件尾,则返回一个空字符串。size是限制读取的字符数,size=-1表示没有限制。
readlines():读取文件数据到一个字符串列表中,每一行数据都是列表的一个元素。
write(s):将字符串s写入文件中,并返回写入的字符数。
writelines(lines):向文件中写入一个字符串列表。不添加行分隔符,因此通常为每一行末尾都提供行分隔符。
flush():刷新写缓冲区,在文件没有关闭的情况下将数据写入文件中。
图形用户界面
建议使用pyqt5
事件循环机制
数据库
pymysql