快速上手python-第一部分

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个模块

SciPy

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 环境

  1. intellij idea
  2. 终端调试

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():返回字典值视图。

字符串

字符串的表示方式
字符串有三种表示方式:普通字符串、原始字符串和长字符串。

普通字符串

普通字符串指用单引号(')或双引号(")括起来的字符串。
转义字符

原始字符串

长字符串

如果要使用字符串表示一篇文章,其中包含了换行、缩进等排版字符,则可以使用长字符串表示。对于长字符串,要使用三个单引号(''')或三个双引号(""")括起来。

字符串与数字的相互转换
  1. 将字符串转换为数字,可以使用int()和float()实现,如果成功则返回数字,否则引发异常。
  2. 将数字转换为字符串,可以使用str()函数,str()函数可以将很多类型的数据都转换为字符串。
  3. 格式化字符串:使用占位符,要想将表达式的计算结果插入字符串中,则需要用到占位符。对于占位符,使用一对大括号({})表示。

函数

定义函数:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350