Python数据加⼯篇数组、随机数、Series
数组
Python中并没有提供数组类型,虽然列表和元组可以代替,但是这两者都是按“对象”处理的,每个成员都需要存储引⽤对象值,时间和空间代价都很⼤,由此出现了优化的第三⽅扩展包,如NumPy.
NumPy是⽤C实现的并进⾏了⼀定的优化处理,最常⽤的是其中的数据结构ndarray,其本质是n维数组,特殊性在于“⽀持通过参数dtype 设置数组元素的类型”
主要特征
1. 形状 shape
shape参数可以是元组也可以是列表,shape =语句可以省略
查看形状可以⽤属性:shape
重构
返回⼀个新的数组reshape()
就地修改,更改数组本⾝resize()
轴调换,如矩阵转置(不改变本⾝):swapaxes(0,1)
多维数组转换成⼀维转换(不改变本⾝)flatten()
多维数组转换成嵌套列表(不改变本⾝)tolist()
2. 元素类型
stype参数是numpy模块提供的数据类型(⽐后者多),Python本⾝提供的类型也可以,dtype =语句可以省略
同⼀个数组中,所有元素的数据类型必须⼀致,如果不⼀致或没有显式定义元素数据类型,则按 dtype = object 处理
设置dtype参数值,⽤户可以⾃定义元素类型
使⽤⽅法astype()可以重设数组元素类型,并返回⼀个新数组,原数组没有改变
创建
⾸先要导⼊numpy包import numpy as np
1. ⽤np.arange()
arange()和 range()使⽤的⽅法差不多,但是range是Python内置函数,返回值为range对象,⽽arange是函数,返回值为NumPy的arrary
2. ⽤np.array()
3. np.ones() np.zeros
4. np.full()创建相同元素的数组
5. np.random()⽣成随机数组
如图,⽅⼀⽅⼆不⽀持定义形状
切⽚
规则切⽚:参考序列切⽚⽅式
Fancy Indexing不规则切⽚:在下标中可以出现另⼀个[ ],直接读取指定下标的元素,也可以出现包含数组名本⾝的“过滤条件”
切⽚时可能需要⽣成⼀个特殊矩阵:“特征矩阵”array[:,np.newwaxis]
规整化处理特征矩阵
查看形状⽤属性shape
更改形状⽤⽅法reshape()
计算
属性计算
计算数组的秩:ndim
属性模式和⽅法模式都可以
计算数组元素的个数:.size
⽅法计算
乘法:*
横向 / 纵向拆分:split() vsplit()
合并concatenate()
横向 / 纵向合并:vstack() hstack()
前提:列 / ⾏个数⼀样
元素另外加(不改变本⾝)np.add()
数组内元素相加(不改变本⾝)np.sum()
插⼊和删除
删除特定元素:np.delete(array,obj,axis)
array:需要处理的矩阵
obj:需要处理的位置,⽐如要删除的第⼀⾏或者第⼀⾏和第⼆⾏
axis:如果输⼊为None:array会先按⾏展开,然后按照obj,删除第obj-1(从0开始)位置的数,返回⼀
个⾏矩阵。如果输⼊为0:按⾏删除
如果输⼊为1:按列删除
插⼊特定元素:np.insert(⽬标数组,下标,待插⼊元素)
缺失值处理
判断每个元素是否为缺失值:isnan()
判断是否⾄少有⼀个缺失值:any()
判断是否所有元素都为缺失值:all()
还有其他⽤法
缺失值处理
⼀般⽤NaN-Safty函数nansum()
None是基础语法提供的特殊数据类型,不能参加算术运算
np.nan是numpy提供的数据类型,属于float类型,可以参加算术运算
linspace函数python排序
返回排序结果:sort()
返回排序后的下标:argsort()
多维数组按指定维度排序:在sort()中加⼀个轴参数axis
axis = 1:
计算前后⾏数不变
2.以⾏为单位,每⾏独⽴计算
3.逐⾏计算
axis = 0:把⾏换成列
拷贝
浅拷贝:引⽤,共享存储空间array1 = array2
深拷贝:复制,两个不同的数组array2 = py()
随机数
⼀次⽣成⼀个随机数
⽣成随机数需要⽤到random模块,常⽤的还有NumPy、SciPy等包
需要设置种⼦数random.seed( ),如果不设置,每次的随机数都会不⼀样
⽣成⼀个随机整数:randint()
⽣成⼀个随机实数:uniform()
⼀次⽣成⼀个随机数组
基本步骤:
第⼀步:通过np.random.RandomState定义⼀个随机变量的⽣成器
第⼆步:根据⽬标数组的特征选择具体⽅法
普通随机矩阵:rand.randint(start,stop,(shape))
服从均匀分布:rand.rand( size) *10
rand()的返回值的取值范围为[0,1],*10是为了调整取值范围
服从正态分布:rand.randn( size) + 5
+5理由同上
⽣成等距数列np.linspace(start,stop,size)
没有⽤⽣成器
Series
Pandas包提供了⼀中key-value型的数据类型,其中key为⽤户⾃定义的显式index,Series与列表的区别在于,Series的每个元素有显式(⾃定义)和隐式(系统⾃动分配)两种index
定义
⽤pd.Series()函数,函数参数包括:
data参数:对应values,取值为字典、列表等
index参数:对应显式index,取值为字典列表等
value的长度应当和index长度相等,如果不匹配就会报ValueError(书上说如果data中只有1个元素,系统⽀持循环补齐,但是敲代码不太⾏)
操作
查看显式index部分:属性index
查看values部分:属性values
可以通过显式index查看元素,⽀持切⽚,但key⼀定要带引号
更新显式index的⽅法:reindex()
不改变本⾝,更新index只是调整次序,如果出现新的key则对应的value为NaN缺失值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论