Python
简介
Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL (GNU General Public License)协议。Python语法简洁清晰,特色之一是强制用空白符SEO靠我(white space)作为语句缩进。
Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用PythoSEO靠我n快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的SEO靠我扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。
7月20日,IEEE发布2017年编程语言排行榜:Python高居首位 2() 。
2018年3月,该语言作者在SEO靠我邮件列表上宣布 Python 2.7将于2020年1月1日终止支持。用户如果想要在这个日期之后继续得到与Python 2.7有关的支持,则需要付费给商业供应商。
目录
区分
运算符优先级
引号使用
数字类型转换SEO靠我
数学函数
随机函数
三角函数
字符串
列表
元组
字典
集合
条件控制语句
自定义函数
类
模块
文件
目录
异常处理
属性
数组维度变换
数组的类型转换
数组的索引和切片
随机数函数
统计函数
画图
导入
导出
创建对象
查看/检查数据
数据选取
数据SEO靠我清洗
区分
名称结构列表[physics, chemistry, 1997, 2000]元组(physics, chemistry, 1997, 2000)字典{a: 1, b: 2, b: 3}
运算符描述**指数 (最高优先级)~ + -按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)* / % //乘,除,取模和取整除+ -加法减法>> <<右移,左移运算符&位 AN
SEO靠我D^ |位运算符<= < > >=比较运算符<> == !=等于运算符= %= /= //= -= += *= **=赋值运算符is is not身份运算符in not in成员运算符not or a
SEO靠我nd逻辑运算符
引号使用
单引,双引 :保留原样
三引号: 多行字符串
数字类型转换
int(x) 转为整数
float(x)转为浮点
complex(x)转为复数 实数为x ,虚数为0
complex(x,y)转为SEO靠我复数 实数为x ,虚数为y
>>>complex(x,y)
(3+5j)
数学函数
abs()
返回绝对值数值
>>>abs(-2)
2
ceil()
上入整
>>>math.ceil
SEO靠我(2.2)
3
floor()
下入整
>>>math.floor(2.6)
2
log()
对数,e为底
import math
>>>math.log(100,
SEO靠我10)
2.0
max(val,val,val)
字符串中找出ASCII码中最大的
>>>max("happy")
y
mix(val,val,val)
最小数
>>>min([2
SEO靠我,5,77,1,3,51])
1
round(float,[n])
四舍五入保留n位小数
>>>round(3.1415926,2)
3.14
sqrt(val)
返回平方根,vSEO靠我al不能为负数
>>>math.sqrt(81)
9.0
随机函数
choice(seq)
import random
#只能有序序列
random.choic
SEO靠我e(range(10))
randrange([start,] stop[,step])
random.randrange(100)
#开始,结束,步长
random.ra
SEO靠我ndrange(0,100,2)
random()
#生成0-1之间的实数
random.random()
seed([])
random.seed(123)
shuffle()
#随机排序
SEO靠我 lst=[1,2,3,4,5]
random.shuffle(lst)
uniform(x,y)
#生成实数
random.uniform(1,100)
sin(x)
x弧度的正弦值
#30°正弦值
import math
math.sin(math.pi/6)
cos(x)
x弧度的余弦值
#
SEO靠我90°余弦值
import math
math.sin(math.pi/2)
tan(x)
x弧度的正切值
#45°正切值
import m
SEO靠我ath
math.tan(math.pi/4)
asin(x)
x的反正弦弧度值
#0.5反正弦弧度值
import math
math.a
SEO靠我sin(0.5)
acos(x)
x的反余弦弧度值
atan(x)
x的反正切弧度值
hypot(x,y)
欧几里德范数
import math
#勾三股四玄五
m
SEO靠我ath.hypot(3,4)
degrees(x)
将弧度转换为角度
radians(x)
将角度转换为弧度
字符串
截取
var1 = "Python Runoob"
print(var1[1:5
SEO靠我])
转义字符
转义字符描述\ (在行尾时)续行符\ \反斜杠符号\单引号\"双引号\a响铃\b退格(Backspace)\e转义\000空\n换行\v纵向制表符\t横向制表符\r回车\f换页\oyy八进
SEO靠我制数,yy代表的字符,例如:\o12代表换行\xyy十六进制数,yy代表的字符,例如:\x0a代表换行\other其它的字符以普通格式输出
逻辑运算符
运算符表达式描述实例
andx and y与:
x为 0
SEO靠我或
false 返回
x 反之
y8 and 9 返回 9
orx or y或:
x 为 0或
false 返回
y 反之
x8 and 9 返回 8
notnot x非:
x 为 0或
false 返回
True 反之
Falsenot 0
SEO靠我 返回 True
成员运算符
运算符描述实例
in在内 如果找到值 返回 True 否则返回 false"a" in "abc" 返回True
not in不在内如果找到值 返回Ture 否则false1 no
SEO靠我t in [2,3] 返回True
身份运算符
运算符描述实例
is引用一个对象 返回 True 否则返回 false"a" is"a" 返回True
is not不是引用一个对象返回Ture 否则false1
SEO靠我 not in 2 返回True
函数
format()
#按位填充
"a{}cd{}f1{}345{}7".format("b","e",2,6)
isalnum()
#判断至少有一个数字
SEO靠我 "Python Runoob".isalnum()
>>>False
isalpha()
#判断至少有一个字符串
"Python Runoob".isalph
SEO靠我a()
>>>True
isdigit()
#判断全是数字
"123".isdigit()
>>>True
lower()
#大转小
"SKHG
SEO靠我JSDOHG".lower()
>>>skhgjsdohg
upper()
#小转大
"skhgjsdohg".upper()
>>>SKHGJSDOHG
mSEO靠我ax(str)
#最大的字母
max("ABCDEFG")
>>>G
min(str)
#最小的字母
max("ABCDEFG")
>>>A
cSEO靠我ount(str,beg,end)
#返回出现次数 beg开始位,end结束位
"skhgjsdohg".count("s",0,3)
>>>1
"skh
SEO靠我gjsdohg".count("s",0,6)
>>>2
find
#返回索引值 否则返回-1 beg开始位,end结束位
"skhgjsdohg".find("h",0,
SEO靠我3)
>>>2
join(seq)
#选择字符串作为分隔符
"%".join(["a","b","c","d"])
>>>a%b%c%d
len(str)
#字
SEO靠我符串长度
len("skhgjsdohg")
>>>10
replace()
#替换字符串
"skhgjsdohg".replace("s","S")
SEO靠我 >>>SkhgjSdohg
split(str,num,count)
#根据字符串截取数组
"skh gjsd ohg".split(" ")
>>>[skh,
SEO靠我 gjsd, ohg]
strip([chars])
#删除首尾空格,或chars指定首尾字符
" skh gjsd ohg ".strip(" ")
>>>skh gjs
SEO靠我d ohg
"skh gjsd ohg".strip("s")
>>>kh gjsd ohg
方法描述string.capitalize()把字符串的第一个字符大写str
SEO靠我ing.center(width)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
string.count(str, beg=0, end=len(string))返回 str 在
SEO靠我string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数string.decode(encoding=UTF-8, errors=strict)以 encod
SEO靠我ing 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 ignore 或 者replacestring.encode(e
SEO靠我ncoding=UTF-8, errors=strict)以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是ignor
SEO靠我e或者replace
string.endswith(obj, beg=0, end=len(string))检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 ob
SEO靠我j 结束,如果是,返回 True,否则返回 False.string.expandtabs(tabsize=8)把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。
stSEO靠我ring.find(str, beg=0, end=len(string))检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的
SEO靠我索引值,否则返回-1
string.format()格式化字符串
string.index(str, beg=0, end=len(string))跟find()方法一样,只不过如果str不在 strin
SEO靠我g中会报一个异常.string.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 Falsestring.isalpha()如果 string
SEO靠我至少有一个字符并且所有字符都是字母则返回 True,否则返回 Falsestring.isdecimal()如果 string 只包含十进制数字则返回 True 否则返回 False.string.i
SEO靠我sdigit()如果 string 只包含数字则返回 True 否则返回 False.string.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字
SEO靠我符都是小写,则返回 True,否则返回 Falsestring.isnumeric()如果 string 中只包含数字字符,则返回 True,否则返回 Falsestring.isspace()如果
SEO靠我string 中只包含空格,则返回 True,否则返回 False.string.istitle()如果 string 是标题化的(见 title())则返回 True,否则返回 Falsestrin
SEO靠我g.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
string.join(seq)以 strin
SEO靠我g 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串string.ljust(width)返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串string.lo
SEO靠我wer()转换 string 中所有大写字符为小写.string.lstrip()截掉 string 左边的空格string.maketrans(intab, outtab])maketrans()
SEO靠我方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。max(str)返回字符串 str 中最大的字母。min(
SEO靠我str)返回字符串 str 中最小的字母。
string.partition(str)有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成
SEO靠我 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string.
sSEO靠我tring.replace(str1, str2, num=string.count(str1))把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.st
SEO靠我ring.rfind(str, beg=0,end=len(string) )类似于 find()函数,不过是从右边开始查找.string.rindex( str, beg=0,end=len(str
SEO靠我ing))类似于 index(),不过是从右边开始.string.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串string.rpartition(str
SEO靠我)类似于 partition()函数,不过是从右边开始查找.string.rstrip()删除 string 字符串末尾的空格.
string.split(str="", num=string.counSEO靠我t(str))以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串[string.splitlines(keepends])按照行(\r, \r\n, \n)分隔
SEO靠我,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。string.startswith(obj, beg=0,end=len(s
SEO靠我tring))检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
string.strip([obj])在 string 上
SEO靠我执行 lstrip()和 rstrip()string.swapcase()翻转 string 中的大小写string.title()返回"标题化"的 string,就是说所有单词都是以大写开始,其余
SEO靠我字母均为小写(见 istitle())
string.translate(str, del="")根据 str 给出的表(包含 256 个字符)转换 string 的字符,要过滤掉的字符放到 del 参
SEO靠我数中string.upper()转换 string 中的小写字母为大写string.zfill(width)返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0string.i
SEO靠我sdecimal()isdecimal()方法检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。
列表
len(obj)
#列表值个数
len([1,2,3])
SEO靠我 >>>3
max(obj)
#最大值
max([1,2,3])
>>>3
min(obj)
#最小值
min([1,2,3])
>>>1
#元组转换为列表
list((1,2,3))
>>>[1,2,3]
list("abc")
>>>[a,b,c]
append(SEO靠我obj)
#追加列表元素
lst = [1,2,3]
lst.append(4)
lst
>>>[1, 2, 3, 4]
SEO靠我-----------------------------------
lst = [1,2,3]
lst.append([4,5])
lst
SEO靠我 >>>[1, 2, 3, [4, 5]]
count(obj)
#元素在列表中出现的次数
lst = [1,2,3,1]
lst.count(1)
SEO靠我>>>2
extend(seq)
#追加列表
olst = [1,2,3]
nlst = [4,5]
olst.extend(nlst)
o
SEO靠我lst
>>>[1, 2, 3, 4, 5]
index(obj)
#元素在列表中第一次出现的位置
lst = [1,2,3,1]
lst.index(1)
SEO靠我
>>>0
insert(index,obj)
#列表中插入元素
lst = [1,2,3]
lst.insert(1,1.5)
lst
SEO靠我 >>>[1, 1.5, 2, 3]
pop(obj=list[-1])
#列表中移除一个指定元素,默认值是最后一个
lst = [1,2,3,4,5,6]
l
SEO靠我st.pop(0)
lst
>>>[2, 3, 4, 5, 6]
remove(obj)
#移除某个元素第一次出现的位置
lst = [1,1,2,3,4,
SEO靠我5,6]
lst.remove(1)
lst
>>>[1, 2, 3, 4, 5, 6]
reverse()
#翻转
lst = [1,1,
SEO靠我2,3,4,5,6]
lst.reverse()
lst
>>>[6, 5, 4, 3, 2, 1, 1]
sort([func])
#升序
SEO靠我 lst = [3,6,2,9,6,7,0,9]
lst.sort()
lst
>>>[0, 2, 3, 6, 6, 7, 9, 9]
SEO靠我--------------------------------------
#降序
lst = [3,6,2,9,6,7,0,9]
lst.sort(
SEO靠我reverse=True)
lst
>>>[9, 9, 7, 6, 6, 3, 2, 0]
clear()
#清空列表
lst = [3,6,2,9,6,7
SEO靠我,0,9]
lst.clear()
lst
>>>[]
copy()
#勤拷贝,地址不同,不修改原列表值
olst = [3,6,2,9,6
SEO靠我,7,0,9]
nlst = olist.copy()
增删改查
#查
list1 = [physics, chemistry, 1997, 2000]
l
SEO靠我ist2 = [1, 2, 3, 4, 5, 6, 7 ]-----------------------------------------------
print "list1[0]
SEO靠我: ", list1[0]
print "list2[1:5]: ", list2[1:5]
#增
list = []
SEO靠我 ## 空列表
list.append(Google) ## 使用 append() 添加元素
list.append(Runoob)
----
SEO靠我---------------------------------------------
print list
[Google, Runoob]
SEO靠我 #删
list1 = [physics, chemistry, 1997, 2000]
--------------------------------
SEO靠我-----------------
print list1
del list1[2]
print "After deleting value at in
SEO靠我dex 2 : "
print list1
元组
字典
add
staff = {name:bob,age:25}
staff[sex] = m
staff
SEO靠我 >>>{age: 25, name: bob, sex: m}
del
staff = {name:bob,age:25}
del staff[age]
st
SEO靠我aff
>>>{name: bob}
update
staff = {name:bob,age:25}
staff[age]=1
staff
SEO靠我 >>>{age: 1, name: bob}
select
staff = {name:bob,age:25}
staff[age]
>>>25
clear
staff =
SEO靠我{name:bob,age:25}
staff.clear()
staff
>>>{}
delete
staff = {name:bob,age:25}
SEO靠我 del staff
json
#转换成json和字符串
import json
staff = {name:bob,age:25}
json.
SEO靠我dumps(staff)
>>>{"name": "bob", "age": 25}
-----------------------------------------
SEO靠我
json.loads(staff)
>>>{age: 25, name: bob}
dict.copy()
#潜复制
staff = {name:bob,
SEO靠我age:25}
staff.copy()
staffcopy = staff.copy()
id(staff),id(staffcopy)
SEO靠我 >>>(92578008, 92506656)
dict.fromkeys(seq,val)
#创建字典,以seq元素作为键名,val作为键值
dict.fromkeys(range(
SEO靠我10),1)
dict.get()
#键名寻找键值,不存在返回default值
staff = {name:bob,age:25}
staff.get("sex","non
SEO靠我e")
>>>none
dict.items()
#返回可遍历的元组数组
staff = {name:bob,age:25}
for k,v in staf
SEO靠我f.items():print(k,v)
>>>name bobage 25
key in dict
#找键名返回True,不存在返回False
staff = {name
SEO靠我:bob,age:25}
"sex"in staff
>>>False
dict.keys()
#返回所有键名
staff = {name:bob,age:
SEO靠我25}
staff.keys()
>>>dict_keys([name, age])
dict.values()
#返回所有键值
staff = {name
SEO靠我:bob,age:25}
staff.values()
>>>dict_values([bob, 25])
dict.setdefault(key,default)
#新增
SEO靠我键,存在则不新增
staff = {name:bob,age:25}
staff.setdefault(name:bob,"sex","m")
staf
SEO靠我f
>>>{age: 25, name: bob, sex: m}
dict.update(dict2)
#更新nstaff更新到ostaff
ostaff = {name
SEO靠我:bob,age:25}
nstaff = {name:bob,sex:m}
ostaff.update(nstaff)
ostaff
SEO靠我>>>{age: 25, name: bob, sex: m}
dict.pop(key,default)
#删除键名所指的键值对,无此键名则返回default设定的值
staff = {
SEO靠我name:bob,age:25}
staff.pop("age","")
>>>25
dict.popitem()
#随机删除
staff = {name:
SEO靠我bob,age:25}
staff.popitem()
>>>(age, 25)
集合
集合运算
set1 = set("abcxyzcba")
set2 =
SEO靠我 set("idea")
符号描述过程结果-差集set1-set2{b, c, x, y, z}|并集set1|set2{a, b, c, d, e, i, x, y, z}&交集se
SEO靠我t1&set2{a}^去同集(去掉相同)set1^set2{b, c, d, e, i, x, y, z}
条件控制语句
if...elif...else
if 条件:do
elif 条件:
SEO靠我do
else:do
while
cai = int(input("1-100"))
key = 20
while cai != key:if cai >
SEO靠我key:print("大了")else:print("小了")cai = int(input("1-100"))
print("中了")
for
a = [a,b,c]
f
SEO靠我or e in a:print(e)
>>> abc
break
a = [a,b,c]
for e in a:if e == "b":print(e)breakprint
SEO靠我("no")
>>> nob
continue
a = [1,2,3,4]
for e in a:if e >= 3:continueprint(e)
>>
SEO靠我> 12
符号描述<小于<=小于等于>大于>=大于等于==恒等!=不等in属于not in不属于
自定义函数
def
def 函数名(参数)语句例:
def afunc(s
SEO靠我ex):if sex == 0:return("man")else:return("woman")
afunc(1)
def 函数名(*参数)语句例:
SEO靠我def average(*args):s = 0for i in argss += ireturn s/len(args)
average(1,2,3,4,5)
lambda
常规:def
SEO靠我 fun(x,y):return x*yfun(1,2)
lambda:fun = lambda x,y:x*yfun(1,2)
全局变量
name = "a" #全局变量
SEO靠我 def changeName():global name #加上global则修改namename = "b"
changeName()
name
类
Class
clas
SEO靠我s Human:age = 1def language(self):return "CH"
H = Human()print("Human的age:",H.age,"Human的lan
SEO靠我guage:",H.language())
Construction Class
extend
class 子类(父类)
private
class Human:__age = 0Human.__age
SEO靠我 >>>AttributeError: type object Human has no attribute __age
模块
import module #导入某个模块
from
SEO靠我 module import function #导入模块中某个函数
from module inport func1,func2 #导入模块中多个函数
from mo
SEO靠我dule import * #导入模块中所有函数
文件
file object = open(file_name[,access_mode][,buffering])
模式描述r只读/指针
SEO靠我开头/默认rb二进制只读/指针开头/默认/非文本r+读写/指针开头rb+二进制/读写/指针开头/非文本w写入/覆盖/建新wb二进制/写入/覆盖/创建非文本w+读写/覆盖/创建wb+二进制/读写/覆盖/
SEO靠我创建/非文本a追加/指针结尾/创建ab二进制/追加/指针结尾/创建a+读写/指针结尾/追加/创建ab+二进制/追加/指针/结尾/创建
open()
fo = open("D:/foo.txt","wb")
SEO靠我
print(fo.name,fo.closed,fo.mode)
close()
fo = open("D:/foo.txt","wb")
fo.close()
SEO靠我 with open("D:/foo.txt","wb") as fo:fo.write(b"hello")
write()
with open("D:/foo.txt","w") as fo:fo
SEO靠我.write("www.baidu.com!\naaa!\n")
read()
#读取到
with open("D:/foo.txt","r+") as fo:str = fo.read(
SEO靠我10)
print(str)
>>>www.baidu.
tell()
#获取当前文件位置
with open("D:/foo.txt","w") as f
SEO靠我o:fo.write("www.baidu.com!\naaa!\n")line = fo.read()
print "读取的数据为: %s" % (line)# 获取当前文件位置
SEO靠我 pos = fo.tell()
print "当前位置: %d" % (pos)fo.close()
seek()
#调整指针位置
#seek(offset[
SEO靠我, whence])
#offset -- 开始的偏移量,也就是代表需要移动偏移的字节数
#whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位
SEO靠我置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。# 重新设置文件读取指针到开头
with open("D:/foo.txt","w") as fo
SEO靠我:fo.write("www.baidu.com!\naaa!\n")line = fo.read()
print "读取的数据为: %s" % (line)fo.seek(0, 0)
SEO靠我
line = fo.read()
print "读取的数据为: %s" % (line)fo.close()
rename()
import os
os.
SEO靠我rename("D:/foo.txt","D:/too.txt")
remove()
import os
os.remove("D:/too.txt")
目录
mkdir()
import os
SEO靠我
os.mkdir("D:/too")
rmdir()
#内含文件不能删
import os
os.rmdir("D:/too")
walk()
#遍历文件夹和
SEO靠我文件
import os
os.walk("D:/too")
#删除文件夹下的所有文件夹和文件
for i in os.walk("D:
SEO靠我/too"):for fname in i[2]:full_name = os.path.join(i[0],fname)os.remove(full_name)for dirc in i[1]:fu
SEO靠我ll_dir = os.path.join(i[0],dirc)remove_dir(full_dir)
os.rmdir("D:/too")
getcwd()
os.getcwd()
示例
numpy
属性
a.ndim
#维度
import numpy as np
a.shape
#各维度尺度
a.size
#元素的个数
a.dtype
#元素的类型
a.itemsize
#元素大小
SEO靠我
np.arange(n)
#从0到n-1的ndarray类型
import numpy as np
a = np.arange(10)
a
SEO靠我 >>>array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.ones(shape)
#生成1的数组
import numpy as np
np
SEO靠我.ones((3,4))
>>>array([[1., 1., 1., 1.],[1., 1., 1., 1.],[1., 1., 1., 1.]])
np.zeros((shape),SEO靠我dtype=np.int32)
#生成int32型的0
import numpy as np
np.zeros((3,4),dtype=np.int32)
SEO靠我 >>>array([[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]])
np.full(shape,val)
#生成val
import numpy as
SEO靠我np
np.full((2,3),6)
>>>array([[6, 6, 6],[6, 6, 6]])
np.eye(n)
#生成单位矩阵
import n
SEO靠我umpy as np
np.eye(5)
>>>array([[1., 0., 0., 0., 0.],[0., 1., 0., 0., 0.],[0., 0., 1.
SEO靠我, 0., 0.],[0., 0., 0., 1., 0.],[0., 0., 0., 0., 1.]])
np.ones_like(arr)
#按照数组形状生成1的数组
import n
SEO靠我umpy as np
a = np.eye(5)
np.ones_like(a)
>>>array([[1., 1., 1., 1., 1.],[1.,
SEO靠我 1., 1., 1., 1.],[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.],[1., 1., 1., 1., 1.]])
np.zeros_like(arr)
#
SEO靠我按照数组形状生成0的数组
import numpy as np
a = np.eye(5)
np.zeros_like(a)
>>>ar
SEO靠我ray([[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0., 0., 0.],[0., 0., 0.
SEO靠我, 0., 0.]])
np.full_like(arr,val)
#按照数组形状生成定值的数组
import numpy as np
a = np.eye(5)
SEO靠我 np.full_like(a,6)
>>>array([[6., 6., 6., 6., 6.],[6., 6., 6., 6., 6.],[6., 6., 6., 6., 6
SEO靠我.],[6., 6., 6., 6., 6.],[6., 6., 6., 6., 6.]])
np.linspace(start,end,isometry)
#范围内等距生成数组
impo
SEO靠我rt numpy as np
np.linspace(1,9,3)
>>>array([1., 5., 9.])
数组维度变换
a.reshape(shape)
#生成行列
SEO靠我 import numpy as np
a=np.arange(27)
a.reshape(3,9)
>>>array([[ 0, 1,
SEO靠我2, 3, 4, 5, 6, 7, 8],[ 9, 10, 11, 12, 13, 14, 15, 16, 17],[18, 19, 20, 21, 22, 23, 24, 25, 26]])
a.reSEO靠我size(shape)
a.swpaxes(ax1,ax2)
#轴交换
import numpy as np
a=np.arange(27).reshape(3,9)
SEO靠我 a.swapaxes(0,1)
>>>array([[ 0, 9, 18],[ 1, 10, 19],[ 2, 11, 20],[ 3, 12, 21],[ 4, 13,
SEO靠我22],[ 5, 14, 23],[ 6, 15, 24],[ 7, 16, 25],[ 8, 17, 26]])
a.flatten()
#数组压扁
import numpy as np
SEO靠我
a=np.arange(24).reshape((2,3,4))
a.flatten()
>>>array([ 0, 1, 2, 3, 4, 5, 6
SEO靠我, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19, 20, 21, 22, 23])
数组的类型转换
a.astype(new_type)
import nu
SEO靠我mpy as np
a=np.arange(24).reshape((2,3,4))
a.astype(float)
a.tolist()
import numpy as
SEO靠我np
a=np.arange(24).reshape((2,3,4))
a.tolist()
数组的索引和切片
一维数组切片
#arr[起始:结束(不含):步长]
SEO靠我 import numpy as np
a = np.arange(10)
a[1:4:2]
多维数组索引和切片
#索引
#arr[起始:结束(不含):
SEO靠我步长]
import numpy as np
a=np.arange(24).reshape((2,3,4))
a[1,2,3]
>>>
SEO靠我23
#切片
#arr[起始:结束:步长]
import numpy as np
a=np.arange(24).reshape((2,
SEO靠我3,4))
a[:,:,::2]
>>>array([[[ 0, 2],[ 4, 6],[ 8, 10]],[[12, 14],[16, 18],[20, 22]]])
SEO靠我
随机数函数
np.random.rand(int0,int1...intN)
#随机浮点数
import numpy as np
np.random.rand(2,3)
npSEO靠我.random.randn(int0,int1...intN)
#标准正态分布
import numpy as np
np.random.randn(2,3)
np.ranSEO靠我dom.randint(low,high,(shape))
#随机整数或整数数组
import numpy as np
np.random.randint(1,10,(2
SEO靠我,3))
统计函数
np.sum
#求和
import numpy as np
a=np.arange(24).reshape((2,3,4))
np.sum
SEO靠我(a)
np.sum(a,axis=1)
np.mean
#总体平均值
import numpy as np
a=np.arange(24).reshape
SEO靠我((2,3,4))
np.mean(a)
np.mean(a,axis=1)
np.std
#
np.var
#
np.min
#最小值
a=np.arange(2
SEO靠我4).reshape((2,3,4))
np.min(a)
np.min(a,axis=1)
np.max
#最大值
a=np.arange(24).res
SEO靠我hape((2,3,4))
np.max(a)
np.max(a,axis=1)
np.argmin
#最小值的下标(一维)
np.argmax
#最大值的下标(一维)
np.mSEO靠我edian()
#中值
画图
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
SEO靠我 x = np.linspace(0,2*np.pi,100)
y = np.sin(x)plt.plot(x,y)
plt.axhline(0,linest
SEO靠我yle="--")
pandas
import pandas as pd
导入
pd.read_csv(filename)
c = pd.read_csv("D://a.csv",encoding="UTF-8
SEO靠我")
pd.read_table(filename)
c = pd.read_table("D://a.csv")
pd.read_execl(filename)
c = pd.read_excel("D:/
SEO靠我/BTC-buy.xls",encoding="UTF-8")
pd.read_sql(query,connection_object)
[提示] 需要cmd里找pip.exe安装install pymSEO靠我ysql
import pymysql
conn = pymysql.Connect(host=127.0.0.1,port=3306,user=root,passwd=root,db=
SEO靠我test,charset=utf8mb4
)
conn
query = "select * from salse"
df = pd.re
SEO靠我ad_sql(query,conn)
df
conn.close()
pd.read_json()
json_str = {"name":["jack","tom"],"a
SEO靠我ge":[18,20]}
df = pd.read_json(json_str)
df
pd.read_html(url)
url="http://quote.stocks
SEO靠我tar.com/"
dfs = pd.read_html(url,attrs={id:table1})
dfs[0]
pd.read_clipboard()
a,1
SEO靠我 b,2
c,3
df = pd.read_clipboard(seq=",")
pd.DataFrame(dict)
dict1 = {"name":["jack
SEO靠我","tom"],"age":[18,20]}
df = pd.DataFrame(dict1)
df
导出
df.to_cvs(filename)
dict1 = {"na
SEO靠我me":["jack","tom"],"age":[18,20]}
df = pd.DataFrame(dict1)
df.to_csv("D://csv1.csv",
SEO靠我index=False)
df.to_excel(filename)
dict1 = {"name":["jack","tom"],"age":[18,20]}
df = pd.DataF
SEO靠我rame(dict1)
df.to_excel("D://xls1.xls",index=False)
df.to_sql(table_name,connection_object)
im
SEO靠我port pandas as pd
from sqlalchemy import create_engine
conn = create_engine(mysql+py
SEO靠我mysql://root:root@localhost:3306/test?charset=utf8mb4)pd.io.sql.to_sql(df,"BTC_buy",con=conn,if_exis
SEO靠我ts=append,index=False)
df.to_json(filename)
import pandas as pd
dict1 = {"name":["jack","tom"]
SEO靠我,"age":[18,20]}
df = pd.DataFrame(dict1)
df.to_json("D://json1.json")
创建对象
pd.DataFramSEO靠我e(np.random.rand(row,column),column=list)
#创建DataFrame对象
import numpy as np
df = pd.D
SEO靠我ataFrame(np.random.rand(5,2),columns=[a,b])
df
pd.Series(list)
#创建索引
import numpy as n
SEO靠我p
arr = np.array([1,2,3,4])
s = pd.Series(arr)
s
pd.date_range()
#日期索引
SEO靠我 import numpy as np
df = pd.DataFrame(np.random.rand(5,2),columns=[a,b])
df.index =
SEO靠我pd.date_range("2018-5-28",periods=df.shape[0])
df
查看/检查数据
df.head(n)
#查看DataFrame前N行
im
SEO靠我port numpy as np
df = pd.DataFrame(np.random.rand(5,2),columns=[a,b])
df.head(2)
#查看DataFrame倒数N行
import numpy as np
df = pd.DataFrame(np.random.rand(5,2),colu
SEO靠我mns=[a,b])
df.tail(2)
df.shape
#查看行,列数
import numpy as np
df = pd.DataFrame(np
SEO靠我.random.rand(5,2),columns=[a,b])
df.shape
df.info()
#查看索引类型、数据类型、内存信息
import numpy as
SEO靠我np
df = pd.DataFrame(np.random.rand(5,2),columns=[a,b])
df.info()
df.describe()
#查看数值列
SEO靠我的汇总统计
import numpy as np
df = pd.DataFrame(np.random.rand(5,2),columns=[a,b])
SEO靠我 df.describe()
s.value_counts(dropna=False)
#查看Series的唯一值和计数
conn = pymysql.Connect(host=127.
SEO靠我0.0.1,port=3306,user=root,passwd=root,db=test,charset=utf8mb4
)
conn
pd.read
SEO靠我_sql("select 位置 from salse",conn)["位置"].value_counts()
conn.close()
df.apply(pd.Series.value_SEO靠我counts)
#查看DataFrame中每列的唯一值
import numpy as np
df = pd.DataFrame(np.random.rand(5,2),
SEO靠我columns=[a,b])
数据选取
df[col]
#根据列,以Series形式返回列
conn = pymysql.Connect(host=127.0.0.1,port=3306,u
SEO靠我ser=root,passwd=root,db=test,charset=utf8mb4
)
conn
query = "select * from s
SEO靠我alse"
df = pd.read_sql(query,conn)
df[位置]
df[[col1,col2]]
#以DataFrame返回多列
df[[
SEO靠我位置,价格]]
s.iloc[0]
#按位选取数据
df.iloc[0]
df[位置].iloc[0]
s.iloc[index_one]
#按索引选取数据
d
SEO靠我f[价格].iloc[1]
df.iloc[0,:]
#返回第一行
df.iloc[0,:]
df.iloc[0,0]
#返回第一列第一个元素
df.iloc[0,0]
df.lSEO靠我oc[index_one,column_one]
#按索引,列选取数据
df.loc[0,成交量]
df.ix[0,column_one]
#返回第一行的某一列对应元素
df
SEO靠我.ix[0,成交量]
数据清洗
df.columns=[a,b,c]
#重命名列名
import numpy as np
df = pd.DataFrame(np.rando
SEO靠我m.rand(5,2),columns=[a,b])
df.columns=[val1,val2]
df
df.isnull()
#检查DataFrame中空值,返回boo
SEO靠我lean数组
import numpy as np
df = pd.DataFrame(np.random.rand(5,2),columns=[a,b])
SEO靠我 df.isnull()
df.notnull()
#检查DataFrame中非空值,返回boolean数组
import numpy as np
df = pd.Da
SEO靠我taFrame(np.random.rand(5,2),columns=[a,b])
df.notnull()
df.dropna()
#删除所有包含空值的行
import
SEO靠我 numpy as np
df = pd.DataFrame(np.random.rand(5,2),columns=[a,b])
df.dropna()
df.dropSEO靠我na(axis=1)
#删除所有包含空值的列
import numpy as np
df = pd.DataFrame(np.random.rand(5,2),colum
SEO靠我ns=[a,b])
df.dropna(axis=1)
df.dropna(axis=1,thresh=n)
#删除所有小于n的非空值的列
import numpy as
SEO靠我np
df = pd.DataFrame(np.random.rand(5,2),columns=[a,b])
df.dropna(axis=1,thresh=n)
dfSEO靠我.fillna(x)
#用x替换DataFrame中所有空值
import numpy as np
df = pd.DataFrame(np.random.rand(5,
SEO靠我2),columns=[a,b])
df.fillna(x)
df.rename(columns=lambda x:x+1)
#批量更改列名
import numpy as
SEO靠我 np
df = pd.DataFrame(np.random.rand(5,2),columns=[a,b])
df.rename(columns=lambda x:
SEO靠我x+1)
df.rename(columns={old_name:"new_name"})
#有选取的更改列名
import numpy as np
df = pd.Dat
SEO靠我aFrame(np.random.rand(5,2),columns=[a,b])
df.rename(columns={b:c})
df.set_index(column_one)
#更
SEO靠我改索引列
import numpy as np
df = pd.DataFrame(np.random.rand(5,2),columns=[a,b])
SEO靠我 df.set_index(a)
df.rename(index=lambda x:x+1)
#批量重命名索引名
import numpy as np
df = pd.Da
SEO靠我taFrame(np.random.rand(5,2),columns=[a,b])
df.rename(index=lambda x:x+1)
s.replace(1,one)
#用on
SEO靠我e代替所有等于1,
import numpy as np
s = pd.DataFrame(np.random.rand(5,2),columns=[a,b])
SEO靠我 s.replace(1,one)
s.replace([1,3],[one,three])
#用one代替所有等于1的,用three代替所有等于3的
import numpy a
SEO靠我s np
s = pd.DataFrame(np.random.rand(5,2),columns=[a,b])
s.replace([1,3],[one,three]
SEO靠我)
s.astype(float)
#将Series数据类型改为float类型
import numpy as np
df = pd.DataFrame({"name":[
SEO靠我"A","B"],"score":[1,2]})
df.score = df.score.astype(float)
df.info()
s.fillna(s.mean(SEO靠我))
#用某列的均值 填充 某列的空值
import numpy as np
df = pd.DataFrame(np.random.rand(5,2),columns=
SEO靠我[a,b])
5-10-3
解决matplotlib中文乱码问题(Windows)http://www.pythoner.com/200.html