Numpy
精通面向数组编程和思维方式是成为Python科学计算大牛的一大关键步骤。——《利用Python进行数据分析》
Numpy(Numerical Python)是Python科学计算的基础包。具有以下功能:
快速高效的多维数组对象ndarray
ndarray表示的是N维数组对象。
ndarray是一个通用的同构数据多维容器,也就是说,其中的元素必须都是相同类型的。
每个数组里面都有一个shape和一个dtype
shape表示各个维度大小的元组
dtype表示数组数据类型
除非是显示的设置dtype,否则np.array会尝试推断出数组的数据类型
用于对数组执行元素级别计算以及直接对数组执行数学运算的函数
用于读写硬盘上基于数组的数据集的工具
线性代数运算、傅里叶变换,以及随机数生成的功能
用于将C、C++、Fortran代码集成到Python的工具
作为在算法之间传递数据的容器
Numpy数组在存储和处理数据要比内置的Python数据结构高效得多。此外,由低级语言(比如C和Fortran)编写的库可以直接操作Numpy数组中的数据,无需进行任何数据复制工作。
查看Numpy的版本
python -c "import numpy; print numpy.version.version"
1
方法
数组创建函数列表:
函数名
说明
zeros
创建指定长度或形状全为0的数组。
ones
创建指定长度或者形状全为1的数组。
empty
创建一个没有任何具体值的数组。
arange
是基于Python原版range函数改进的数组版本。
array
将输入的数据(可以是列表、元组、数组、其他的序列数组)转换为Numpy的ndarray。要是不指定dtype,那么就由该方法推断出dtype。默认直接复制数据。
asarray
将输入的数据转换为Numpy的ndarray。如果输入本身是ndarray就不进行复制操作了。
eye
创建一个N×N的单位矩阵,主对角线为1,其余为0。
identity
创建一个N×N的单位矩阵,主对角线为1,其余为0。
一元函数
函数名称
说明
abs
计算整数、浮点数或者是复数的绝对值。
fabs
计算整数、浮点数的绝对值(比abs快)。
sqrt
计算各个元素的平方根,相当于arr**0.5。
square
计算各个元素的平方,相当于arr**2。
exp
计算各个元素的指数e*。
log
自然对数。
log10
底数为10的对数。
log2
底数为2的对数。
log1p
底数为(1+x)的对数。
sign
计算各个元素的正负号:1(正数)、-1(负数)、0(零)。
ceil
计算各元素的ceiling值,即大于等于该值的最小正数。
floor
计算个元素的floor值,即小于等于该值的最大正数。
rint
将个元素四舍五入到最接近的整数,保留dtype。
modf
将数组的小数和整数部分以两个独立数组的形式返回。
isnan
返回一个表示“哪些值是NaN(这不是一个数字)”的布尔值类型。
isfinite
返回一个表示“哪些元素是有穷的(非inf,非NaN)”的布尔值数组。
isinf
返回一个表示“哪些元素是无穷的”的布尔值数组。
cos、sin、tan
三角函数。
cosh、sinh、tanh
双曲型三角函数。
arccos、arcsin、arctan
反三角函数。
arccosh、arcsinh、arctanh
双曲型反三角函数。
logical_not
计算各个元素not x的真值,相当于-arr。
说明:
NaN表示not a number,即非数字。
二元函数
函数名称
说明
add
将数组中对应的元素相加。
subtract
从第一个数组中减去第二个数组中元素。
multiply
数组元素相乘。
divide
除法。
floor_divide
向下取整除法。
power
对第一个数组中的元素A,根据第二个数组中的相应元素B,计算A^B的值。
maxmum
取最大值。
fmax
除NaN外的最大值。
minimum
取最小值。
fmin
除NaN外的最小值。
mod
取余数。
copysign
将第二个数组中的值的符号复制给第一个数组中的值。
greater
大于。
greater_equal
大于等于。
less
小于。
less_equal
小于等于。
equal
等于。
not_equal
不等于。
logical_and
逻辑与(&)。
logical_or
逻辑或(|)。
logical_xor
逻辑异或(^)。
基本数组统计方法
名称
说明
sum
对数组中全部或者是某个轴向的所有元素进行求和。零长度的数组的sum值为0。
mean
算术平均值。零长度的数组的mean值为NaN。
std
标准差。自由度可调整(默认为n)。
var
方差。自由度可调整(默认为n)。
min
返回数组中的最小元素。
max
返回数组中的最大元素。
argmin
返回数组中最小元素的索引。
argmax
返回数组中最大元素的索引。
median
返回数组的中位值。注意,该方法不会对数组进行排序。数组个数为奇数个返回最中间一个数字,偶数个返回最中间两位的均值。
ravel
将多维数组展平多一维数组。
cov
协方差。
布尔型数组方法
名称
说明
any
数组中是否存在一个或者多个True。如果存在就返回True,反之,返回False。
all
数组中是否全部为True。如果所有数组中所有元素都是True就返回True,反之,返回False。
数组集合运算
名称
说明
unique(x)
有序返回x中所有的唯一元素。
intersect1d(x, y)
有序返回x和y中的公共元素。
union1d(x, y)
有序返回x和y的并集。
in1d(x, y)
返回一个表示“x的元素是否包含于y”的布尔型数组。存在用True表示,不存在用False表示。
setdiff1d(x, y)
返回存在于x但是不存在于y的集合差。
setxor1d(x, y)
返回存在于一个数组中但是不同时存在于两个数组中的元素的对称差集合。
数组操作
名称
说明
searchsorted
searchsorted函数为指定的插入值返回一个在有序数组中的索引位置,从这个位置插入可以保持数组的有序性。
extract
从数组中抽取元素。
cumsum
所有元素的累计和。
cumprod
所有元素的累计积。
矩阵
名称
说明
mat
创建一个矩阵。注意:mat函数创建矩阵时,若输入已为matrix或ndarray对象,则不会为它们创建副本。因此,调用mat函数和调用matrix(data, copy=False)等价。
T
转置。mat.T
I
逆矩阵。mat.I
bmat
分块矩阵,可以用小的矩阵来创建大的矩阵。矩阵A,矩阵B,矩阵C,C=bmat("A B;B A")
线性代数
线性代数是数学的一个重要分支。numpy.linalg模块包含线性代数的函数。使用这个模块,我们可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等。
名称
说明
dot
矩阵乘法。用法:x.dot(y)或者是np.dot(x, y)
diag
以一维数组的形式返回方阵中的对角线(或者非对角线)元素,或将一维数组转换为方针(非对角线元素为0)。
trace
计算对角线元素的和。
det
计算矩阵行列式。
eig
计算矩阵的本征值和本征向量。
inv
计算矩阵的逆,即求逆矩阵。
pinv
计算矩阵的Moore-Penrose伪逆。
qr
计算QR分解。
svd
计算奇异值分解(SVD)。
solve
解线性方程组Ax=b,其中A是一个方阵。
lstsq
计算Ax=b的最小二乘积。
随机数
这些是numpy.random的函数:
名称
说明
seed
确定随机数生成器的种子。
permutation
返回一个序列的随机排列或返回一个随机排列的范围。
shuffle
对一个序列就地随机排序。
rand
产生均匀分布的样本值。
randint
从给定的上下限范围内随机选取整数。
randn
产生正态分布(平均值为0,标准差为1)的样本值,类似于MATLAB接口。
binomial
产生二项分布的样本值。
normal
产生正态(高斯)分布的样本值。
beta
产生Beta分布的样本值。
chisquare
产生卡方分布的样本值。
gamma
产生Gamma分布的样本值。
uniform
产生[01)中均匀分布的样本值。
专用函数
名称
说明
sort
函数返回排序后的数组。
lexsort
函数根据键值的字典序进行排序。
argsort
函数返回输入数组排序后的下标。
ndarray
名称
说明
sort
函数可对数组进行原地排序。
msort
函数沿着第一个轴排序。
sort_complex
函数对复数按照先实部后虚部的顺序进行排序。
金融函数
名称
说明
fv
函数计算所谓的终值(future value),即基于一些假设给出的某个金融资产在未来某一时间点的价值。
pv
函数计算现值(present value),即金融资产当前的价值。
npv
函数返回的是净现值(net present value),即按折现率计算的净现金流之和。
pmt
函数根据本金和利率计算每期需支付的金额。
irr
函数计算内部收益率(internal rate of return)。 内部收益率是是净现值为0时的有效利率,不考虑通胀因素。
mirr
函数计算修正后内部收益率(modified internal rate of return),是内部收益率的改进版本。
nper
函数计算定期付款的期数。
API文档
Numpy1.13.dev0文档
Pandas
Pandas(Python Data Analysis Library)是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的(让以Numpy为中心的应用变得更加简单)。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
数据结构
说明
Series
一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。如果传入的数据找不到对应的列,就将结果置为NaN。
Time- Series
以时间为索引的Series。
DataFrame
二维的表格型数据结构。很多功能与R中的data.frame类似。可以将DataFrame理解为Series的容器。以下的内容主要以DataFrame为主。 如果传入的列在数据中找不到,就会产生NA值。如果赋值是一个Series,就会精确匹配DataFrame中的索引,并且所有的空位都会被填充NaN。
Panel
三维的数组,可以理解为DataFrame的容器。
Pandas兼具Numpy高性能的数组计算功能以及电子表格和关系型数据库(如SQL)灵活的数据处理功能。它提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。
Series
Series的字符串的表现形式为:索引在左边,值在右边。
Series的最重要的一个功能就是它在算术运算中会自动对齐不同索引的数据。
Series的索引切片和原Python的切片是不一样的,这里的test['a':'c']中ac都是包含的,而原Python中的切片中c是不包含的。
DataFrame
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等等)。
DataFrame可以既有行索引又有列索引,他可以被看做是由Series组成的字典(共用同一个索引)。跟其他类似的数据结构相比(如R的data.frame),DataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的数据是以一个或者多个二维块存放的(而不是列表、字典或者是别的一维数据结构)。
注意:虽然DataFrame是以二维结构保存数据的,但你仍然可以轻松地将其表示为更高维度的数据(层次化索引的表格型结构,这是Pandas中许多高级数据处理功能的关键要素)。
我们可以通过类似字典标记的方式或者属性的方式,获取DataFrame中的一个Series,比如frame['name']这种形式。
注意:返回的Series拥有原DataFrame相同的索引,且其name属性也已经被相应的设置好了。行也可以通过位置或者名称的方式进行获取,比如用索引字段ix。
注意:通过索引方式返回的列只是相应数据的视图而已,并不是副本。因此,对返回的Series所做的任何修改全部都会反映到源DataFrame上。通过Series的copy方法即可显式地复制列。
Index的方法和属性
名称
说明
append
连接另一个Index对象,产生一个新的Index。
diff
计算差集,并得到一个Index。
intersection
计算交集。
union
计算并集。
delete
删除索引i处的元素,并得到新的Index。
drop
删除传入的值,并得到新的Index。
insert
将元素插入到索引i处,并得到新的Index。
is_monotonic
当各个元素大于等于前一个元素的时候,返回True。
is_unique
当Index唯一的时候,返回True。
unique
返回在数组中Index唯一的元素构成的数组。
reindex
reindex函数的参数列表
参数
说明
index
用作索引的新序列。既可以是Index实例,也可以是其他序列型的Python数据结构。Index会被完全使用,就像没有任何复制一样。
method
插值(填充)方式,具体参数见下面表格。
fill_value
在重新索引的过程中,需要引入缺失值是使用的替代值。
limit
前向或者后向填充时的最大填充量。
level
在MultiIndex的指定级别上匹配简单索引,否则选取其子集。
copy
无论如何复制,默认为True;如果是False,则新旧相等的话就不复制了。
reindex函数method参数
参数
说明
ffill
前向填充值。
pad
前向搬运值。
bfill
后向填充值。
backfill
后向搬运值。
算术方法
方法
说明
add
加法
sub
减法
div
除法
mul
乘法
约简方法的常用选项
选项
说明
axis
约简的轴。DataFrame的行用0表示,列用1表示。
skipna
排除缺失值,默认值为True。
level
如果轴是层次化索引的(即MultiIndex),则根据level分组约简。
描述统计方法
方法
说明
count
非NA值的数量。
describe
针对Series或者各个DataFrame列计算汇总统计。
min
最小值。
max
最大值。
argmin
计算能够获取到最小值的索引位置。(整数)
argmax
计算能够获取到最大值的索引位置。(整数)
idxmin
计算能够获取到最小值的索引值。
idxmax
计算能够获取到最大值的索引值。
quantile
计算样本的分位数(0到1)。
sum
值的总和。布尔值会被强制转换为1(True)和0(False)。
mean
值的平均值。
median
值的算术中位数。(50%中位数)
mad
根据平均值计算平均绝对离差。 |
var
样本值的方差。
std
样本值的标准差。
skew
样本值的偏度(三阶矩)。
kurt
样本值的峰度(四阶矩)。
cumsum
样本值的累积和。布尔值会被强制转换为1(True)和0(False)。
cummin
样本值的累计最大值。 布尔值会被强制转换为1(True)和0(False)。
cummax
样本值的累计最小值。布尔值会被强制转换为1(True)和0(False)。
cumprod
样本值的累计积。布尔值会被强制转换为1(True)和0(False)。
diff
计算一阶差分(对时间序列很有用)。
pct_change
计算百分数变化。