当前位置: 首页 > 图灵资讯 > 技术篇> NumPy和Pandas常用库

NumPy和Pandas常用库

来源:图灵教育
时间:2023-06-01 09:51:50

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.Pandas

pandas 以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.Series

    Series几乎所有的索引操作和函数都可以用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.DataFrame

    DataFrame是一个表格数据结构,它包含一组有序列,每列可以是不同的值类型(值、字符串、布尔值等)。).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.Index

    Pandas的索引对象负责管理轴标签和其他元数据(如轴名等)。).构建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中唯一值的数组