Numpy和Pandas常用库1.NumPy
Numpy是高性能科学计算和数据分析的基本包。部分功能如下:
- ndarray, 多维数组具有矢量算术操作和复杂广播能力,快速节省空间。
- 标准数学函数(无需编写循环)用于快速操作整组数据。
- 用于读写磁盘数据和操作内存映射文件的工具。
- 傅里叶的线性代数、随机数生成和变换功能。
- 用于集成C、C++、用语言编写代码的工具,如Fortran。
首先导入numpy库:import numpy as np
A NumPy函数及属性:类型
类型代码
说明
int8、uint8
i1、u1
8位整形(1字节)有符号和无符号
int16、uint16
i2、u2
16位整形(2字节)有符号和无符号
int32、uint32
i4、u4
32位整形(4字节)有符号和无符号
int64、uint64
i8、u8
64位整形(8字节)有符号和无符号
float16
f2
半精度浮点数
float32
f4、f
单精度浮点数
float64
f8、d
双精度浮点数
float128
f16、g
扩展精度浮点数
complex64
c8
两个32位分别表示复数
complex128
c16
两个64位分别表示复数
complex256
c32
两个128位分别表示复数
bool
?
布尔型
object
O
python对象
string
Sn
固定长度字符串,每个字符1字节,如S10
unicode
Un
Unicode固定长度,字节数由系统决定,如U10
表2.1.A.1 Numpy类型
生成函数
作用
np.array( x)
np.array( x, dtype)
将输入数据转换为ndaray
ndarayy将输入数据转换为type
np.asarray( array )
将输入数据转换为新数据(copy)ndarray
np.ones( N )
np.ones( N, dtype)
np.ones_like( ndarray )
生成N长度的一维全ndaray
dtype的一维全ndaray生成N长度类型
生成一个形状和参数相同的全ndaray
np.zeros( N)
np.zeros( N, dtype)
np.zeros_like(ndarray)
生成N长度的一维全ndaray
生成N长度类型dtype的一维全ndaray
类似np.ones_like( ndarray )
np.empty( N )
np.empty( N, dtype)
np.empty(ndarray)
未初始化ndaray生成N长度
dtype的未初始化ndaray生成N长度类型
类似np.ones_like( ndarray )
np.eye( N )
np.identity( N )
创建一个N * N单位矩阵(对角线为1,其余为0)
np.arange( num)
np.arange( begin, end)
np.arange( begin, end, step)
从0到num-1步数为1的一维ndaray生成
从begin到end-1步数为1的一维ndaray生成
从begin到end-step的步数是step的一维ndaray
np.mershgrid(ndarray, ndarray,...)
ndarray生成 * ndarray * ...多维ndarray
np.where(cond, ndaray1, ndaray2)
根据条件cond,选择ndaray1或ndaray2,返回新的ndaray
np.in1d(ndarray, [x,y,...])
检查ndarray中的元素是否等于[x,y,...]其中一个返回bool数组
矩阵函数
说明
np.diag( ndarray)
np.diag( [x,y,...])
方阵的对角线(或非对角线)元素以一维数组的形式返回
将一维数组转换为方阵(非对角线元素为0)
np.dot(ndarray, ndarray)
矩阵乘法
np.trace( ndarray)
计算对角线元素的和
排序函数
说明
np.sort( ndarray)
排序,返回副本
np.unique(ndarray)
返回ndaray中的元素,排除重复元素,并进行排序
np.intersect1d( ndaray1, ndaray2)
np.union1d( ndaray1, ndaray2)
np.setdiff1d( ndaray1, ndaray2)
np.setxor1d( ndaray1, ndaray2)
回到两者的交集并排序。
并集并排序返回两者。
回到两者之间的差异。
回到两者之间的对称差
一元计算函数
说明
np.abs(ndarray)
np.fabs(ndarray)
计算绝对值
计算绝对值(非复数)
np.mean(ndarray)
求平均值
np.sqrt(ndarray)
计算x^0.5
np.square(ndarray)
计算x^2
np.exp(ndarray)
计算e^x
log、log10、log2、log1p
计算自然对数,底部为10的log、log底为2、底为(1+x)的log
np.sign(ndarray)
计算正负号:1(正)、0(0)、-1(负)
np.ceil(ndarray)
np.floor(ndarray)
np.rint(ndarray)
最小整数计算大于等于改变值的最小整数
计算小于或等于该值的最大总数
四舍五入到最近的整数,保留dtype
np.modf(ndarray)
以两个独立的数组方式返回数组的小数和整数部分
np.isnan(ndarray)
返回一个bool型数组来判断Nan是否是
np.isfinite(ndarray)
np.isinf(ndarray)
回到bool型数组,判断它是否贫穷(非inf、非nan)
回到一个判断是否无限的bool型数组
cos、cosh、sin、sinh、tan、tanh
普通型和双曲型三角函数
arccos、arccosh、arcsin、arcsinh、arctan、arctanh
反三角函数和双曲反三角函数
np.logical_not(ndarray)
计算每个元素的not x的真值,相当于-ndarray
函数的多元计算
说明
np.add(ndarray, ndarray)
np.subtract(ndarray, ndarray)
np.multiply(ndarray, ndarray)
np.pide(ndarray, ndarray)
np.floor_pide(ndarray, ndarray)
np.power(ndarray, ndarray)
np.mod(ndarray, ndarray)
相加
相减
乘法
除法
圆整除(丢弃余数)
次方
求模
np.maximum(ndarray, ndarray)
np.fmax(ndarray, ndarray)
np.minimun(ndarray, ndarray)
np.fmin(ndarray, ndarray)
求最大值
寻求最大值(忽略NaN)
求最小值
寻求最小值(忽略NaN)
np.copysign(ndarray, ndarray)
将参数2中的符号赋予参数1
np.greater(ndarray, ndarray)
np.greater_equal(ndarray, ndarray)
np.less(ndarray, ndarray)
np.less_equal(ndarray, ndarray)
np.equal(ndarray, ndarray)
np.not_equal(ndarray, ndarray)
>
>=
<
<=
==
!=
logical_and(ndarray, ndarray)
logical_or(ndarray, ndarray)
logical_xor(ndarray, ndarray)
&
|
^
np.dot( ndarray, ndarray)
计算两个ndaray矩阵内积
np.ix_([x,y,m,n],...)
Fancy生成一个索引器 indexing(花式索引)
文件读写
说明
np.save(string, ndarray)
将ndarray保存到文件名称中 [string].npy (无压缩)中的文件
np.savez(string, ndaray1, ndaray2, ...)
将所有ndarray压缩并保存到文件中[string].npy文件中
np.savetxt(sring, ndarray, fmt, newline=‘\n‘)
以fmt的形式将ndarray写入文件
np.load(string)
读取文件名string的文件内容,并将其转换为ndarray对象(或字典对象)
np.loadtxt(string, delimiter)
读取文件名string的文件内容,将delimiter转换为ndarray
表2.1.A.2 np常用函数
B NumPy.ndarray函数及属性:ndarray.ndim
获得ndaray维数的ndaray
ndarray.shape
获取ndarray各维度的长度
ndarray.dtype
获取ndarray中元素的数据类型
ndarray.T
简单转换矩阵ndaray
表2.1.B.1 ndarray属性
函数
说明
ndarray.astype(dtype)
转换类型,如果转换失败,Typeeerrorororo就会出现
ndarray.copy()
复制ndarray(新内存空间)
ndarray.reshape((N,M,...))
将ndarray转化为Ndaray*M*...多维ndarray(非copy)
ndarray.transpose((xIndex,yIndex,...))
根据维索引xindex,yIndex...依靠shape进行矩阵转移,不能用于一维矩阵(非copy)
ndarray.swapaxes(xIndex,yIndex)
交换维度(非copy)
计算函数
说明
ndarray.mean( axis=0 )
求平均值
ndarray.sum( axis= 0)
求和
ndarray.cumsum( axis=0)
ndarray.cumprod( axis=0)
累加
累乘
ndarray.std()
ndarray.var()
方差
标准差
ndarray.max()
ndarray.min()
最大值
最小值
ndarray.argmax()
ndarray.argmin()
最大值索引
最小值索引
ndarray.any()
ndarray.all()
是否至少有一个True?
都是True吗?
ndarray.dot( ndarray)
计算矩阵内积
排序函数
说明
ndarray.sort(axis=0)
排序,返回源数据
表2.1.B.2 ndaray函数
ndarray[n]
选择第n+1元素
ndarray[n:m]
选择n+1到第m的元素
ndarray[:]
选择所有元素
ndarray[n:]
选择n+1到最后一个元素
ndarray[:n]
选择第0到第n个元素
ndarray[ bool_ndarray ]
注:bool_ndaray表示bool型ndaray
选择为true的元素
ndarray[[x,y,m,n]]...
选择x的顺序和顺序、y、m、n的ndarray
ndarray[n,m]
ndarray[n][m]
选择n+1行m+1元素
ndarray[n,m,...]
ndarray[n][m]...
选n行n列...的元素
表2.1.B.3 ndarray索引/切片方法
C NumPy.random函数及属性:函数
说明
seed()
seed(int)
seed(ndarray)
确定生成种子的随机数量
permutation(int)
permutation(ndarray)
返回一维从0~9序列的随机排列
返回一个序列的随机排列
shuffle(ndarray)
当地随机排列一个序列
rand(int)
randint(begin,end,num=1)
产生int个均匀分布的样本值
num整数从给定的begin和end中随机选择
randn(N, M, ...)
生成一个N*M*...ndarray的正态分布(平均值为0,标准差为1)
normal(size=(N,M,...))
生成一个N*M*...正态(高斯)分布的ndaray
beta(ndaray1,ndaray2)
beta分布的样本值必须大于0
chisquare()
产生卡方分布的样本值
gamma()
产生gamma分布的样本值
uniform()
样本值在[0,1)中均匀分布
2.1.C.1 random常用函数函数
D NumPy.linalg函数及属性:函数
说明
det(ndarray)
计算矩阵列式
eig(ndarray)
计算方阵的本征值和本征向量
inv(ndarray)
pinv(ndarray)
计算方阵的逆转
计算方阵的Moore-Penrose伪逆
qr(ndarray)
计算qr分解
svd(ndarray)
计算奇异值分解svddd
solve(ndarray)
Ax解线性方程组 = b,A是方阵
lstsq(ndarray)
计算Ax=b最小乘解
2.1.D.1 linalg常用函数
2.Pandaspandas 以NumPy为基础 该工具是为解决数据分析任务而创建的工具。Pandas 它包含了大量的库和一些标准的数据模型,提供了高效操作大型数据集所需的工具。pandas提供了大量的函数和方法,使我们能够快速、方便地处理数据。
>>> from pandas import Series, DataFrame
>>> import pandas as pd
A.pandas函数
说明
pd.isnull(series)
pd.notnull(series)
判断是否为空(NaN)
判断是否不是空的(not NaN)
2.2.A.1 pandas常用函数函数
B.SeriesSeries几乎所有的索引操作和函数都可以用ndaray或字典来整合字典和ndaray的优点。
属性
说明
values
获取数组
index
获取索引
name
valuesname
index.name
索引的name
2.2.B.1 Series的常用属性
函数
说明
Series([x,y,...])Series({‘a‘:x,‘b‘:y,...}, index=param1)
生成一个Seriess
Series.copy()
复制一个Seriess
Series.reindex([x,y,...], fill_value=NaN)
Series.reindex([x,y,...], method=NaN)
Series.reindex(columns=[x,y,...])
回到适应新索引的新对象,将缺失值填充到fill_value
返回适应新索引的新对象,填充方法为method
重新索引列
Series.drop(index)
丢弃指定项
Series.map(f)
元素级函数的应用
排序函数
说明
Series.sort_index(ascending=True)
根据索引返回已排序的新对象
Series.order(ascending=True)
根据值返回已排序的对象,NaN值在末尾
Series.rank(method=‘average‘, ascending=True, axis=0)
每组分配一个平均排名
df.argmax()
df.argmin()
含有最大值的索引位置的返回
含有最小值的索引位置返回
2.2.B.2 Series常用函数
ffill, bfill 前填/后填
pad, backfill 向前搬运,向后搬运
method选项rank
‘average‘ 在相等分组中,每个值分配的平均排名
‘max‘,‘min‘ 在整个分组中使用最小排名
C.DataFrameDataFrame是一个表格数据结构,它包含一组有序列,每列可以是不同的值类型(值、字符串、布尔值等)。).DataFrame既有行索引,也有列索引,可以看作是由Series组成的字典(共享相同的索引)。
通过类似的字典,DataFrame可以使用.columnname的方式将列获取为series。线也可以通过位置或名称获取。
新列将为不存在的列赋值创建。
>>> del frame[‘xxx‘] # 删除列
属性
说明
values
DataFrame值
index
行索引
index.name
行索引的名称
columns
列索引
columns.name
列索引的名称
ix
DataFramee回归行
ix[[x,y,...], [x,y,...]]
重新索引行,然后重新索引列
T
frame行列转移
2.2.C.1 DataFrame常用属性
函数
说明
DataFrame(dict, columns=dict.index, index=[dict.columnnum])
DataFrame(二维ndaray)
DataFrame(字典由数组、列表或元组成)
DataFrame(NumPy的结构化/记录数组)
DataFrame(由Series组成的字典)
DataFrame(字典由字典组成)
DataFrame(字典或Series列表)
DataFrame(由列表或元组成的列表)
DataFrame(DataFrame)
DataFrame(NumPyMaskedArray)
构建DataFrame
数据矩阵也可以引入行标和列标
每个序列将成为DataFrame的一列。所有序列的长度必须相同
类似于“由数组成的字典”
每个Series都会成为一列。如果没有明确的索引,每个Series的索引将合并成行索引的结果
每个内层字典都会成为一列。键将合并成行索引的结果。
一切都将成为DataFrame的一行。并集索引成为DataFrame的列标。
类似于二维ndaray
DataFrame沿用
类似于二维ndaray,但掩码结果会变成NA/缺失值
df.reindex([x,y,...], fill_value=NaN, limit)
df.reindex([x,y,...], method=NaN)
df.reindex([x,y,...],columns=[x,y,...],copy=True)
返回适应新索引的新对象,将缺失值填充到fill_value,最大填充量为limitt
返回适应新索引的新对象,填充方法为method
同时,重新索引行和列,默认复制新对象。
df.drop(index, axis=0)
丢弃指定轴上的指定项。
排序函数
说明
df.sort_index(axis=0, ascending=True)
df.sort_index(by=[a,b,...])
按索引排序
总结统计函数
说明
df.count()
非NaN的数量
df.describe()
一次性产生多个汇总统计
df.min()
df.min()
最小值
最大值
df.idxmax(axis=0, skipna=True)
df.idxmin(axis=0, skipna=True)
Seriess返回含有最大值的index
Seriess返回含有最小值的index
df.quantile(axis=0)
计算样品的分位数
df.sum(axis=0, skipna=True, level=NaN)
df.mean(axis=0, skipna=True, level=NaN)
df.median(axis=0, skipna=True, level=NaN)
df.mad(axis=0, skipna=True, level=NaN)
df.var(axis=0, skipna=True, level=NaN)
df.std(axis=0, skipna=True, level=NaN)
df.skew(axis=0, skipna=True, level=NaN)
df.kurt(axis=0, skipna=True, level=NaN)
df.cumsum(axis=0, skipna=True, level=NaN)
df.cummin(axis=0, skipna=True, level=NaN)
df.cummax(axis=0, skipna=True, level=NaN)
df.cumprod(axis=0, skipna=True, level=NaN)
df.diff(axis=0)
df.pct_change(axis=0)
回到含有求和小计的Seriess
回到含有平均值的Seriess
返回含有算术中位数的Series
根据平均值计算平均绝对离差的Seriess返回一个
回到方差的Seriess
返回标准差的Seriess
返回样本值的偏度(三阶距)
返回样本值的峰度(四阶距)
累计和返回样本
累计最大值返回样本
累计最小值返回样本
累积返回样本
返回样本的一阶差分
返回样本的百分比变化
计算函数
说明
df.add(df2, fill_value=NaN, axist=1)
df.sub(df2, fill_value=NaN, axist=1)
df.p(df2, fill_value=NaN, axist=1)
df.mul(df2, fill_value=NaN, axist=1)
元素级相加,默认使用fill_value
元素级相减,对齐时找不到元素默认使用fill_value
元素级相除,默认使用fill__value
元素级相乘,默认使用fill_value
df.apply(f, axis=0)
f函数应用于由各行各列形成的一维数组
df.applymap(f)
将f函数应用到每个元素上
df.cumsum(axis=0, skipna=True)
累加,返回累加后的dataframe
2.2.C.2 常用函数Dataframe
索引方式
说明
df[val]
单列或一组选择DataFrame
df.ix[val]
单行或一组行选择Dataframe
df.ix[:,val]
选择单列或列子集
df.ix[val1,val2]
将一个或多个轴匹配到新索引中
reindex方法
将一个或多个轴匹配到新索引中
xs方法
根据标签选择单行或单列,返回Seriess
icol、irow方法
根据整数位置选择单列或单行,并返回Seriess
get_value、set_value
根据行标签和列标签选择单个值
2.2.C.3 常用的Dataframe索引方法
运算:默认情况下,Dataframe和Series之间的算术操作会将Series的索引匹配到Dataframe的列,并沿列向下传播。如果找不到索引,索引就会产生并集。
D.IndexPandas的索引对象负责管理轴标签和其他元数据(如轴名等)。).构建Series或DataFrame时,使用的任何数组或其他序列的标签都将被转换为Index。Index对象不能修改,以便在多个数据结构之间安全共享。
Index的主要Index对象
说明
Index
最广泛的Index对象将轴标签表示为由Python对象组成的NumPy数组
Int64Index
特殊Index针对整数
MultiIndex
“层次化”索引对象表示单轴上的多层索引。它可以被视为由元组成的数组
DatetimeIndex
存储纳秒级时间戳(用NumpyDatetime64类型表示)
PeriodIndex
特殊Index针对Period数据(时间间隔)
2.2.D.1 Index属性的主要Index
函数
说明
Index([x,y,...])
创建索引
append(Index)
连接另一个Index对象,生成新的Index
diff(Index)
计算差集,产生新的Index
intersection(Index)
计算交集
union(Index)
计算并集
isin(Index)
检查是否存在与参数索引中,并返回bool型数组
delete(i)
删除索引i处元素,获得新的Index
drop(str)
删除输入值,获得新的Index
insert(i,str)
将元素插入索引i,获得新的Index
is_monotonic()
当每个元素大于前一个元素时,返回true
is_unique()
当Index没有重复值时,返回true
unique()
计算Index中唯一值的数组