0%

Python

Python使用手册

模块

Package Useage
Altair 1. 绘图
2.可在Jupyter环境放大、缩小、交互
Categorical_encoders 对类别变量进行0-1编码、独热编码(One-Hot Encoding)
cmath 对复数进行操作
collections 对队列进行操作
Dython 简易数据建模库
heapq 1. 对堆进行操作
2. 可进行堆排序
jieba 文本分词
Keras
matplotlib 绘图
missingno 可视化缺失值
NumPy 对数组、矩阵操作
Pandas 对序列Series、数据框DataFrame进行操作
pip 安装python模块
Pyecharts
re 正则表达式处理字符串
Seaborn 基于Matplotlib的数据可视化库
sklearn
string
TextWrap 文本段落处理

基础

对象

Python中的对象包含三个基本要素:

  • id (身份标识)
  • type (数据类型)
  • vlaue (值)

切片操作

  • Python的切片操作不会引起下标越界异常
1
2
3
lst = ['a', 'b', 'c', 'd']
print(lst[15:])
## 输出 []
  • 索引操作可能会引起下标越界异常
1
2
3
4
5
6
7
8
lst = ['a', 'b', 'c', 'd']
print(lst[15])
#Traceback (most recent call last):
#
# File "<ipython-input-9-bcb28d671f1f>", line #2, in <module>
# print(lst[15])
#
#IndexError: list index out of range

命名

xxx

公用的命名方法

  • 标识符由字母-数字-下划线组成
  • 不能以数字开头
  • 区分大小写

_xxx

  • 半保护命名(protect)
  • 代表不能直接访问的类属性
  • 只有类对象和子类对象能访问
  • 在模块或类外不可以使用
  • 不能用from module import * 导入
  • 为了避免与子类的方法名称冲突

__xxx

  • 全私有、全保护(private)
  • 类的私有成员
  • 只有类对象自己能访问,而子类对象不能访问
  • 不能用from module import * 导入
  • 实际上是 _classname__xxx

xxx

  • 内建方法
  • 用户避免使用该定义方法

数据类型

Python3的6个标准数据类型:

  • 不可变:
    • 数字Number
    • 字符串String
    • 元组Tuple
  • 可变:
    • 列表List
    • 字典Dictionary
    • 集合Set

数字Number

Python3支持int、float、bool、complex数字类型。

复数

  • 表示复数的语法是real + image j
  • 实部real和虚部image都是浮点数
  • 虚部的后缀可以是jJ
  • 复数的conjugate方法可以返回该复数的共轭复数
1
2
3
4
5
6
lst1 = [1, 2, 3]  ## 可变对象
lst2 = lst1 ## 引用传递
lst1.append(5)
lst2
# [1, 2, 3, 5]
## 不可变对象为值传递

字符串

Post not found: python-字符串

元组Tuple

  • 是一种有序列表,和list非常相似
  • 一旦初始化就不能修改
  • 可以获取元素但不能赋值变成其他的元素
  • 元组只包含一个元素时,要在元素后面添加逗号来消除歧义
  • 元组的元素不允许删除
  • 可用del删除整个元组
  • 元组之间可以用 + 和 * 进行运算
  • 创建tuple比list要快,存储空间比list占用更小
  • tuple是不可变的,可以作为dict的key
  • 成员关系操作符 in 和 not in 也可以直接用在元组上
  • 用圆括号封装 ()
1
2
3
4
5
cmp(tuple1, tuple2)  ##比较两个元组元素
len(tuple) ##计算元组元素个数
max(tuple) ##返回元组中元素最大值
min(tuple) ##返回元组中元素最小值
tuple(seq) ##把列表seq转换为元组

列表List

Python | 列表 List
  • 是一种有序的集合,可以随时添加和删除其中的元素
  • 元素类型可以不同
  • list可以嵌套(即list的元素可以是list)
  • 成员关系操作符 in 和 not in 可直接用在列表上
  • list 是可变的对象
  • 用方括号封装 [ ]
1
2
3
4
lst.append(a)   ##在列表lst尾部添加元素a
lst.insert(num, c) ##在列表lst的第num+1个位置(索引为num)插入元素c
lst.pop() ##删除列表lst的最后一个元素,并返回该元素
lst.pop(i) ##删除列表lst的索引为i的元素(i可以是负数;i=-2表示删除倒数第二个元素)

字典

集合set()

Python | 集合 Set
1
2
3
4
5
6
set(("Rank"))
#{'R', 'a', 'k', 'n'}
set("Rank")
#{'R', 'a', 'k', 'n'}
set(["Rank"])
#{'Rank'}

正则表达式

正则表达式:对字符串类型数据进行匹配、提取等操作的逻辑公式。

元字符

元字符(Meta Characters):标点等特殊字符。主要有等。

字符 说明
. 匹配除换行符(\n,\r)之外的任何单个字符。
若要匹配包括\n在内的任何字符,则应使用 (.\|\n)。
$ 匹配输入字符串的结束位置。
如果设置了regex对象的Multiline属性,则$也匹配\n或\r之前的位置。如果$置于character class (即[$])中,则消除了其特殊意义。
例如,[akm$]示匹配a、k、m或$。
* 匹配*前面的子表达式零次或多次。
等价于 {0,}。
+ 匹配+前面的子表达式一次或多次;至少匹配一次。
等价于{1,}
? 匹配?前面的子表达式零次或一次。
等价于{0,1}
| 表示可选项(或),即 | 前后的表达式任选一个。
\ 将一个字符标记为一个特殊字符/原义字符,或一个向后引用、或一个八进制转义符。
例如:\n表示换行符,而 n 表示字母“n”; \ 表示右斜杠“\”;\t表示制表符。
^ 取非匹配
[] 选择方括号例的任意一个。
例如,[0-2]与[012]完全等价,[Rr] 表示匹配字母R和r
{} 前面的字符或表达式的重复次数。
例如,{5,12}表示重复的次数不能小于5,不能多于12,否则都不匹配
() 提取匹配的字符串。
例如,(\\s*)表示连续空格的字符串

数量词

数量词(Quantifiers)

字符 说明
{n} 至少匹配n次。
例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“fooooood”中的所有“o”;“o{1,}”等价于“o+”;“o{0,}”等价于“o*”
{n,m} n小于等于m。最少匹配n次且最多匹配m次。
【注】在逗号和两个数之间不能有空格。
例如,“o{1,3}”表示匹配“fooooood”中的前三个“o”;“o{0,1}”等价于“o?”,匹配“o”零次或1次。

序列

序列(Sequences):用于匹配字符序列。

字符 说明
\b 匹配一个单词边界(boundary),即单词和空格间的位置。
例如,“er\b”可以匹配单词“never”中的“er”,但不能匹配单词“verb”中的“er”。
\B 匹配非单词边界。
例如,“er\B”可以匹配单词“verb”中的“er”,但不能匹配单词“never”中的“er”。
\d 匹配任何一个数字字符(digits)。
等价于 “[0-9]”。
\D 匹配任何一个非数字字符。
等价于 “[^0-9]”。
\f 换页符。
等价于 “\x0c” 和 “\cL”。
\h 匹配水平间隔
\H 匹配非水平间隔
\n 换行符
等价于 “\x0a” 和 “\cJ”
\r 回车符
等价于 “\x0d” 和 “\cM”
\s 匹配任何空白字符,包括空格、制表符、换页符等等。
等价于 “[\f\n\r\t\v]”。
\S 匹配任何非空白字符
等价于 “[^\f\n\r\t\v]”。
\t 制表符(tab)
等价于 “\x09” 和 “\cl”。
\v 垂直制表符
等价于 “x0b” 和 “cK”
\V 匹配非垂直间隔
\w 匹配任何字母、数字、下划线(单词)(word)
等价于 “[A-Za-z0-9]”
\W 匹配任何非字母、数字、下划线
等价于“[^A-Za-z0-9]”

运算符

身份运算符 is

is:身份运算符,比较变量的 id 地址是否相同,即是否指向同一块内存地址

比较运算符

`==``:比较运算符,比较变量的 value 是否相同,即不管是否是同一块内存地址,只要其值相同即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## 涉及Python的深浅拷贝问题
##数字、字符串等不可变数据类型
##value一样,id一样
a = 2
b = 2

print(id(a), id(b))
140710848664416 140710848664416

print(a == b, a is b)
True True

##对于列表和字典等可变数据类型
##即使value一样,id也不一样
a = [1, 2, 3]
b = [1, 2, 3]

print(id(a), id(b))
2348645341512 2348645363144

print(a == b, a is b
True False
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## 涉及Python的深浅拷贝问题
##数字、字符串等不可变数据类型
##value一样,id一样
a = 2
b = 2

print(id(a), id(b))
140710848664416 140710848664416

print(a == b, a is b)
True True

##对于列表和字典等可变数据类型
##即使value一样,id也不一样
a = [1, 2, 3]
b = [1, 2, 3]

print(id(a), id(b))
2348645341512 2348645363144

print(a == b, a is b)
True False

内置函数

open()

打开一个文件,创建一个file对象

1
open(name[, mode[, buffering]])
  • name:文件名称
  • mode:打开文件的模式
  • buffering:是否寄存
  • buffering=0:不寄存
  • buffering=1:访问文件时会寄存行
  • buffering=c:$c>1$,表明寄存区的缓冲大小
  • buffering=c:$c<0$,寄存区的缓冲大小为系统默认
模式 打开方式 其他说明
r 只读 (1)文件的指针放在文件的开头
(2)默认模式
rb 以二进制格式打开文件用于只读 (1)文件的指针放在文件的开头
(2)默认模式
r+ 用于读写 文件的指针放在文件的开头
rb+ 以二进制格式打开文件用于读写 文件的指针放在文件的开头
w 只用于写入
wb
w+ 用于读写
wb+ 以二进制格式打开文件用于读写
a 用于追加
ab 以二进制格式打开文件用于追加
a+ 用于读写
ab+ 以二进制格式打开文件用于追加 (1)如果该文件已存在,文件指针将会放在文件的结尾
(2)如果该文件不存在,创建新文件用于读写。

r

表示 ''内的字符串默认不转义

1
2
3
4
5
6
print('Hello,\nWorld')  ## ''内的\n发生了转义(换行)
#Hello,
#World

print(r'Hello,\nWorld') ## ''内的\n视为字符串(不转义)
#Hello,\nWorld

str()

zip()

1
2
3
4
5
for part in zip(*[iter('AABCAAADA')]*3):
print(part)
#('A', 'A', 'B')
#('C', 'A', 'A')
#('A', 'D', 'A')
1
2
3
4
5
6
7
8
9
10
for part in zip(*[iter('AABCAAADA')]*3):
ans = []
for x in part:
if x not in ans:
ans.append(x)
print("".join(ans))
#AB
#CA
#AD

内置数据集

seaborn

Post not found: python-seaborn Seaborn

使用load_dataset()载入数据集(需要联网);seaborn含有的数据集有:

  • anscombe
  • attention
  • brain_networks
  • car_crashes
  • diamonds
  • dots
  • exercise
  • flights
  • fmri
  • gammas
  • iris
  • mpg
  • planets
  • tips
  • titanic
1
2
3
4
5
6
7
8
9
10
import seaborn as sns
df = sns.load_dataset('titanic') ##载入数据集Titanic

df.sample(5) ## 随机抽样5行
print(df.info()) ## 数据集基本信息
print(df.describe()) ## 数据集的变量的基本信息

## 离散变量的基本信息
for name in df.dtypes[(df.dtypes == "category") | (df.dtypes == "object")].index:
print("{} 特征值 : {}".format(name, str(df[name].unique())))

sklearn

Post not found: python-sklearn Sklearn

使用load_数据集名称()载入数据集

函数名 详情 用途
load_boston Boston房价数据 回归
load_iris 经典的鸢尾花数据 分类
load_diabetes 糖尿病患者数据 回归
load_digits 手写数字数据 多分类
load_linnerud
load_wine 分类
load_breast_cancer 分类

sklearn中较大型数据集(需要联网)请看:Post not found: python-sklearn Sklearn中的datasets

Python2 vs Python 3

默认编码

Python 2 Python 3
默认编码 ASCII utf-8

用户交互

Python 2 Python 3
用户输入函数 raw_input() input()

Unicode

Python 2 Python 3
Unicode默认 2个字节表示一个字符 4个字节表示一个字符

init文件

Python 2 Python 3
init文件 新建的包如果没有init文件,不能被调用 新建的包里面的init文件如果被删除,包照样可以被调用

range

Python 2 Python 3
xrange
返回一个迭代器
在每次循环中生成序列的下一个数字
range
返回一个list

相当于Python2中的xrange

print函数

Python 2 Python 3
print 是statement,不需要加括号 是函数,需要加括号

整数相除

Python 2 Python 3
/ 3/2int 3/2float

异常处理

Python 2 Python 3
as关键字 不用使用 必须使用
1
2
3
4
5
6
7
8
9
10
11
## Python 2
try:
1/0
except ZeroDivisionError, e:
print str(e)

## Python 3
try:
1/0
except ZeroDivisionError as e:
print(str(e))

map函数

Python 2 Python 3
map() 返回list 返回迭代器(iterator)

不等运算符

Python 2 Python 3
不等运算符 <>!= 只有!=

数据类型

Python 2 Python 3
数据类型 long类型 没有long类型,只有int

has_key方法

Python 2 Python 3
字典 字典支持has_key方法 字典不支持has_key方法
1
2
3
4
5
6
7
8
9
10
person = {"age": 35, "name": "Wang Wu"}
## Python 2
print "person has key \"age\":", person.has_key("age")
# person has key "age": True
print "person has key \"age\":", "age" in person
# person has key "age": True

## Python 3
print("person has key \"age\":", "age" in person)
# person has key "age": True

其他

  • bit,比特位,b
  • 计算机内部数据存储的最小单位,表示二进制数(也就是0, 1)

字节

  • byte,B
  • 计算机中数据处理的基本单位
简写 英文名称 中文名称 换算
B byte 字节 1B = 8 b
KB Kilobyte 千字节 1KB = 1024 B
MB Megabyte 兆字节/百万字节,简称兆 1 MB = 1024 KB
GB Gigabyte 吉字节/十亿字节,简称千兆 1 GB = 1024 MB
TB Terabyte 太字节/万亿字节 1 TB = 1024 GB
PB Petabyte 拍字节/千万亿字节 1 PB = 1024 TB
EB Exabyte 艾字节/百亿亿字节 1 EB = 1024 PB
ZB Zettabyte 泽字节/十万亿亿字节 1 ZB = 1024 EB
1

参考资料

Thank you for your approval.

欢迎关注我的其它发布渠道