1.字典
一种映射类型,key-value对
创建字典:
-直接
aInfo={‘A’:1000,‘B’:2000, ‘C’:3000}
-利用dict函数
bInfo=dict([[‘A’,3000],[‘B’,2000],[‘C’,3000]])
cInfo=dict([(‘A’,3000),(‘B’,2000),(‘C’,3000)])
dInfo=dict(A=1000,B=2000,C=3000)
三种形式
创建字典时设置默认值:
aDict={}.fromkeys((‘A’,’B’,’C’),3000)
sorted()对字典进行排序,返回的是将key值排序后的list
zip()函数可以将两个list连接成一个一一对应的字典
2.字典的基本操作
按照键值查找: aInfo[‘A’]
更新: aInfo[‘A’]=5000
添加: aInfo[‘D’]=4000
成员判断: ‘F’ in aInfo
删除字典: del aInfo
字典的格式化字符串:
%(key)格式说明符 % 字典对象名
可以使用输出模板
template=’’’…’’’
字典的内建函数:
dict.keys()
dict.values()
dict.get(key) 不存在的时候返回None
dict.update(dict2) 会对照dict2中的值更新dict中的值,dict中不存在的键值对会进行添加
dict.clear() 会将该字典以及指向该字典的字典都清空,而dict={}只会清空dict,不会对其他字典产生影响
items()
iter()
setdefault()
fromkeys()
has_keys()
pop()
字典作为函数的形式参数:
deffun(args1,*argst,**argsd):
其中**argsd指的是字典
3.集合
可变集合set
不可变集合frozenset
不重复
a=set(b),可以除去b中的重复元素
集合比较:
集合关系运算:
集合的内建函数
面向所有集合:
s.issubset(t) s是不是t的子集
issuperset(t)
union(t)
intersection(t)
difference(t)
symmetric_difference(t)
copy()
面向可变集合:
update(t)
intersection_update(t)
difference_update(t)
symmetric_difference_update(t)
add(obj)
remove(obj)
discard(obj)
pop()
clear()
4.扩展库SciPy
SciPy中的数据结构:
F ndarray(N维数组)
F Series(变长字典)
F DataFrame(数据框)
NumPy
特征:
Ÿ 强大的ndarray对象和ufunc函数
Ÿ 精巧的函数
Ÿ 比较适合线性代数和随机处理等科学计算
Ÿ 有效的通用多维数据,可定义任意数据类型
Ÿ 无缝对接数据库
SciPy核心库
特征:
Ÿ Python中科学计算程序的核心包
Ÿ 有效计算numpy矩阵,让Numpy和SciPy协同工作
Ÿ 致力于科学计算中常见问题的各个工具箱,其不同子模块有不同的应用,如插值、积分、优化和图像处理等。
Matplotlib
特征:
Ÿ 基于NumPy
Ÿ 二维绘图库,简单快速生成曲线图、直方图和散点图等形式的图
Ÿ 常用的pyplot是一个简单提供类似MATLAB接口的模块
pandas
特征:
Ÿ 基于SciPy和NumPy
Ÿ 高效的Series和DataFrame数据结构
Ÿ 强大的可扩展数据操作与分析的python库
Ÿ 高效处理大数据集的切片等功能
Ÿ 提供优化库功能读写多种文件格式,如CSV、HDF5
5.ndarray
ndarray-N维数组
² NumPy中基本的数据结构
² 别名为array
² 利于节省内存和提高CPU计算时间
² 有丰富的函数
ndarray的创建和输出:
ndarray创建函数:
arrange(起始,末尾(不包括该值),增量)
array(数组)
copy
empty
empty_like
eye
fromfile
fromfunction(func,(m,n)) 从0,0开始到m-1,n-1的数组并且进行func运算
identity
linspace
logspace
mgrid
ogrid
ones
ones_like
r
zeros
zeros_like
两个ndarray对象做计算时是对应元素做计算。
ufunc函数:
是一种能对数组的每个元素进行操作的函数。许多内置ufunc函数实在c语言级别实现的,速度非常快。
通过help(ufunc)查看ufunc函数
import numpy as np
np.ufunc函数 #比内置函数要快
6.变长字典Series
基本特征:
Ÿ 类似一维数组的对象
Ÿ 由数据和索引组成
from pandas importSeries
aSer=pd.Series([1,2,0,’a’]) #自带索引
bSer=pd.Series([‘apple’,’peach’,’lemon’],index=[1,2,3]) #指定索引
bSer.index #查看索引
bSer.values #查看数值
aSer[index] #通过索引访问数值
Series的数据对齐:
aSer=pd.Series(data,index=sindex)
即按照sindex在data中寻找,如果不存在则索引对应的值为NaN(Not a Number)
重要功能:可以在算术运算中自动对齐不同索引的数据,即两个Series相加会自动对齐,非共有的会返回NaN
pd.isnull(aSer) 判断字典每个索引对应的值是否为空
np.exp(aSer) 计算自然对数
Series的name属性:
重要功能:
Ÿ Series对象本身及其索引均有一个name属性
Ÿ Series的name属性与其他重要功能关系密切
可以对name进行赋值,可以使处理问题更高效
7.DataFrame
基本特征:
² 一个表格型的数据结构
² 含有一组有序的列(类似于index)
² 大致可以看成是共享同一个index的Series的集合
创建:
data={‘name’:[‘a’,’b’,’c’],’pay’:[4000,5000,6000]}
pd.DataFrame(data)
自动创建index,name和pay作为值的列名,也可以与Series一样,指定index
基本操作:
l 取DataFrame对象的列和行可以获得Series
frame[‘name’]
frame.pay
这两种方法等价
frame.ix[index_a] 可以获得索引为index_a的对应的值,以 列名 值的形式。
l 修改和删除
frame[‘name’]=’admin’ 可以将整列改成admin
del frame[‘pay’] 将整列删除
l DataFrame的name属性
类似于Series