学习过程:Python入门 -> pandas ->scikit-learn
主要任务:学习SciPy
Python入门(Python3)
基本输入输出
a = input("input number") |
GC机制
维护对象的引用计数表,如果计数为0就回收资源
命名规则
一般以下划线开头的变量都是系统变量,下划线开头的变量不能被import导入,以两个下划线开头的变量是类的本地变量
赋值语句
Python支持多种赋值方式,简单赋值,序列赋值,多目标赋值,增强赋值a = 10
(x,y) = (10,20)
[x,y] = [30,'abc']
基本容器
- 集合:无需元素不可变
- 数字:整数,浮点数,复数,分数
- 序列:字符串,列表,元组都属于有序序列,支持索引分片和合并等操作
- 映射:字典,将键映射到值
列表
a = [1,2,'abc'] |
列表是广义容器,可以支持下表访问,变长,可以修改成员。类似一个存储广义类型引用的变长数组。
删除元素:del a[2]
,会自动变长
也可以支持在任何一个位置插入分片实现变长和删除元素:a[1]=[2,3,4]
成员方法:
append
:在列表末尾追加新对象,它直接修改原来的列表。extend
:新列表扩展原有的列表。insert
:将对象插入到列表中。remove
:用于移除列表中某个值的第一个匹配项。注意:该方法是一个没有返回值的原位置改变方法。reverse
:将列表中的元素反向存放。注意:该方法改变了列表但不返回值。sort
:排序
返回新的排序后的列表(不变性):1,1,4,5,1,4,1,9,1,9,8,1,0] arr = [
sorted(arr) sorted_arr =
arr
[1, 1, 4, 5, 1, 4, 1, 9, 1, 9, 8, 1, 0]
sorted_arr
[0, 1, 1, 1, 1, 1, 1, 4, 4, 5, 8, 9, 9]
元组
创建:>> 1,2,3
(1,2,3)
>> (1,2,3)
(1,2,3)
>> tuple([1,2,3]) #列表强转
(1,2,3)
元组对象具有不变性,可以当成其他语言的Immutable List用。当元组长度为1,必须再写一个逗号:type((1))
<class 'int'>
>>> type((1,))
<class 'tuple'>
字典
字典是python中唯一内建的映射类型,字典中是无序的,所有存储在一个特定键下,键可以是数字,字符串,甚至元组。
创建d = ={'age':42, 'name': 'Gumby'}
items = [('name','Gumby'),('age',42)]
d = dict(items)
基本字典操作:
len(d)
返回d中项(键-值对)的数量d[k]
返回到关联到键k上的值d[k]=v
将值v关联到键k上del d[k]
删除键为k的项k in d
检查d中是否含有键为k的项
字典方法:
clear()
方法清除字典中的所有项。copy()
方法返回一个具有相同键-值对的新字典。get()
返回键Key映射的值。如果键Key不存在,返回空值。可用default参数指定不存在的键的返回值。pop()
从字典中删除键,并返回映射值。若键不存在,则返回default;未指定default参数时会出错。popitem()
从字典删除并返回键值对元组。空字典调用该方法会产生KeyError错误。 -setdefault()
该方法用于返回映射值或者为字典添加键值对。update()
该方法用于为字典添加键值对。
字典视图:字典的items()
、keys()
和values()
方法用于返回字典键值对的视图对象,视图对象支持迭代操作,并可反映对字典的修改。视图对象不是列表,不支持索引。通常用list()
方法将视图对象转换为列表。
Items()
方法返回键值对视图。keys()
方法返回字典中所有键的视图。values()
方法放回字典中全部值的视图。- 键视图的集合操作:键视图支持各种集合运算,键值对视图和值视图不支持集合运算
字典解包合并:"name":"thankod"} d1 = {
"age":24} d2 = {
{**d1,**d2}
{'name': 'thankod', 'age': 24}
文件操作
myfile = open("filename")
打开文件myfile.read() #把文件内容读入一个字符串
myfile.read(n) #把n个字符读进一个字符串
myfile.readline() #把下一个换行符号之前的内容读入一个字符串,付出内容包含航尾符号
myfile.readlines() #把整个文件内容读入一个字符串列表,每一行为一个字符串
myfile.write(xstring) #把字符串写入文件指针位置,返回写入的字符个数
myfile.writelines(xlist) #把列表写入文件指针位置,返回写入字符个数
myfile.seek(n) #将文件指针移动到第n个字节,0表示只想文件开头
myfile.tell() #返回文件指针当前位置
for line in myfile # 迭代的方式从文件中每次读一行
读写二进制文件需要用到pickle
模块处理文件中对象的读写import pickle
data = {"msg":"hello"}
save_file = open('save.dat','wb')
pickle.dump(data,save_file)
save_file.close()
import pickle |
循环和条件语句
if 1==2: |
for var in object: |
while cond: |
列表循环的写法:t = [3,5,2,1]
for x in range(len(t)):
t[x] = t[x] + 10
等价于t = [x+10 for x in t]
筛选t = [x+10 for x in t if(x % 2 == 0)]
多层嵌套[x+y for x in (10,20) for y in (1,2,3)]
zip函数参数为多个可迭代对象,每次从每个可迭代对象中取一个值组成一个元组,直到可迭代对象中的值取完,生成的zip对象包含了一系列的元组。zip((1,2,3),(10,20,30)) x =
next(x)
(1,10)
next(x)
(2,20)
next(x)
(3,30)
map函数用于将函数映射到可迭代对象,对可迭代对象中的每个元素应用该函数,函数返回值包含在生成的map对象中,ord函数返回字符的ASCII码map(ord,'abc') x =
next(x)
97
next(x)
98
next(x)
99
filter函数与map函数有点类似,filter函数用指定函数处理可迭代对象。若函数返回值为真,则对应课迭代对象元素包含在生成的filter对象序列中。b = [1,2,3,4,5,6]
a = list(filter(lambda item:item>2,b))
print(a)
输出[3,4,5,6]
循环过程中获得索引:"114","514","1919","810"] arr = [
for i, x in enumerate(arr):
print(i,x)
...
0 114
1 514
2 1919
3 810
字符串格式化
print("I am a %s, my name is %s" %("boy","thankod")) |
函数
一般定义:def print_word(word):
print("hello %" %word)
匿名函数lamda:a = list(filter(lambda item:item > 2,b))
解构元组参数:def plus(a,b):
return a + b
...
3,4) args = (
plus(*args)
7
yield
yield可以将函数编程一个生成器,在return前就输出每次迭代的结果。def fibonacci(n):
1,1 a,b =
for i in range(n):
yield a
a, b = b, a + b
...
for out in fibonacci(10):
print(out)
...
1
1
2
3
5
8
13
21
34
55
模块 包
多个模块构成了包,引入例子:from PIL import image
import pandas as pd
面向对象
class Duck(Animals): #父类是Animal |
python的对象成员方法,即使是构造器,也要写self参数。即使在对象内部调用内部方法,也要写成self.method(),调用
duck = Duck('Donnald') |
第三方包
Numpy
Numpy是Python中科学计算的基础包,可用来存储和处理大型矩阵。它的主要对象是同种
元素的多维数组(以及派生的矩阵等),NumPy的数组类被称作 ndarray 。在NumPy中
维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。
pandas包
pandas是python环境下最有名的数据统计包, pandas包中主要的数据结构是DataFrame。
DataFrame翻译为数据框,是一种数据组织方式,每列可以是不同的值类型(数值、字符
串、布尔值等)。Dataframe的优点是可以按列来操作数据。
turtle包
turtle是一个简单的画图工具,封装了logo语言import turtle
t = turtle.Pen()
t.left(120) #右转/度
t.forward(10) #前进/像素
t.right(120)
t.forward(10)
t.reset() #复位