我们都知道Numpy是Python环境下的扩展程序库,支持大量的维数组和矩阵运算;Pandas也是Python环境下的数据操作和分析软件包,是一个强大的数据分析库。两者在日常数据分析中都发挥着重要作用。如果没有Numpy和Pandas的支持,数据分析将变得异常困难。但是有时候我们需要加快数据分析速度,有什么办法可以帮助我们吗?在本文中,我们介绍了12个Numpy和Pandas函数,这些高效的函数将使数据分析变得更加简单和方便。Numpy的6个高效函数首先从Numpy开始。Numpy是一个用于科学计算的Python语言扩展包,通常包括强大的N维数组对象、复杂函数、集成C/C++和Fortran代码的工具,以及有用的线性代数、傅里叶变换和随机数生成功能。除了上述明显的用途之外,Numpy还可以用作通用数据的高效多维容器,定义任何数据类型。这使Numpy能够与各种数据库无缝且快速地集成。接下来对这6个Numpy函数一一进行分析。argpartition()在argpartition()的帮助下,Numpy可以找到N个最大值的索引,并且还会输出找到的索引。然后我们根据需要对值进行排序。>>>x=np.array([12,10,12,0,6,8,9,1,16,4,6,0])>>>index_val=np.argpartition(x,-4)[-4:]>>>index_valarray([1,8,2,0],dtype=int64)>>>np.sort(x[index_val])array([10,12,12,16])allclose()allclose()用于匹配两个数组并获得由布尔值表示的输出。如果两个数组在公差范围内不相等,则allclose()返回False。这个函数对于检查两个数组是否相似非常有用。>>>array1=np.array([0.12,0.17,0.24,0.29])>>>array2=np.array([0.13,0.19,0.26,0.31])#容差为0.1,它应该返回False:>>>np.allclose(array1,array2,0.1)False#公差为0.2,它应该返回True:>>>np.allclose(array1,array2,0.2)Trueclip()Clip()生成一个Values数组保持在一个区间内。有时候,我们需要保证这个值在上下限之内。为此,我们可以使用Numpy的clip()函数来达到这个目的。给定一个区间,区间外的值被裁剪到区间边缘。>>>x=np.array([3,17,14,23,2,2,6,8,1,2,16,0])>>>np.clip(x,2,5)array([3,5,5,5,2,2,5,5,2,2,5,2])extract()顾名思义,extract()在特定条件下从数组中提取特定元素。通过extract()我们还可以使用and和or等??条件。#随机整数>>>array=np.random.randint(20,size=12)>>>arrayarray([0,1,8,19,16,18,10,11,2,13,14,3])#除以2检查余数是否为1>>>cond=np.mod(array,2)==1>>>condarray([False,True,False,True,False,False,False,True,False,True,False,True])#使用extract获取值>>>np.extract(cond,array)array([1,19,11,13,3])#直接在extract上应用条件>>>np.extract(((array<3)|(array>15)),array)array([0,1,19,16,18,2])where()Where()用于从满足条件指定元素的数组中返回。例如,它返回满足特定条件的值的索引位置。Where()类似于SQL中使用的where条件,如下例所示:>>>y=np.array([1,5,6,8,1,7,3,6,9])#其中y大于5,返回索引位置>>>np.where(y>5)array([2,3,5,7,8],dtype=int64)#首先将替换匹配的值condition,#second将替换没有的值>>>np.where(y>5,"Hit","Miss")array(['Miss','Miss','Hit','Hit','Miss','Hit','Miss','Hit','Hit'],dtype='>>a=np.array([1,5,6,8,1,7,3,6,9])>>>print("a的第50个百分位数,轴=0:",...np.percentile(a,50,轴=0))a的第50个百分位数,轴=0:6.0>>>b=np.array([[10,7,4],[3,2,1]])>>>print("第30个百分位数ofb,axis=0:",...np.percentile(b,30,axis=0))30thPercentileofb,axis=0:[5.13.51.9]这是Numpy扩展的6个高效函数的包,我相信它会帮助你。接下来看看Pandas数据分析库的6大功能。Pandas数据统计包的六大高效功能Pandas也是一个Python包,提供快速、灵活和富有表现力的数据结构,旨在更容易处理结构化(表格、多维、异构)和时间序列数据。简单直观。Pandas适用于以下类型的数据:具有异构类型列的表格数据,例如SQL表或Excel表有序和无序(不一定是固定频率)时间序列数据具有行/列标签(同构类型或异构类型)的任意矩阵数据type)其他任何形式的统计数据集。事实上,数据根本不需要标记以适合Pandas结构。Pandas擅长的类型如下:轻松处理浮点型和非浮点型数据中的缺失数据(用NaN表示)。可扩展性:可以从InsertingordeletingcolumnsinDataFrameorhigher-dimensionalobjectsExplicitdatacanbeautomaticallyaligned:objectscanbeexplicitlyalignedtoasetoflabels,或者用户可以简单地选择忽略标签,制作Series、DataFrame等.auto-aligndataflexible分组功能对数据集进行split-apply-merge操作,聚合和转换数据简化了将数据转换为DataFrame对象的过程,而这些数据在Python和NumPy数据结构中基本上是不规则的和不同索引的智能标签用于大型数据集的基于切片、索引和子集的数据更直观的数据集合并和连接更灵活地重塑、旋转和数据集轴的分层标记(可能具有多个标签)用于从平面文件(CSV)添加数据的强大IO工具和分隔符)、Excel文件、数据库和从HDF5格式保存/加载数据时间序列特定功能:数据范围生成打开和频率转换、移动窗口统计、数据移位和滞后等。read_csv(nrows=n)大多数人犯的一个错误是在不需要它的情况下完整读取.csv文件。如果一个未知的.csv文件有10GB,读取整个.csv文件是非常不明智的,不仅会占用大量内存,而且会花费很多时间。我们需要做的就是从.csv文件中导入几行,然后根据需要继续导入。importioimportrequests#我正在使用这个在线数据集只是为了让你们更容易(url).content#只读前10行df=pd.read_csv(io.StringIO(s.decode('utf-8')),nrows=10,index_col=0)map()map()函数根据相应的Input来映射Series的值。用于将Series中的每个值替换为来自函数、dict或Series的另一个值。#创建一个dataframedframe=pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['India','USA','China','Russia'])#从framechangefn=lambdax:'%.2f'%x#Makechangeselement-wisedframe['d'].map(changefn)apply()apply()允许用户传入一个格式化字符串函数,并将其应用于Pandas序列中的每个值。#maxminusmixlambdafnfn=lambdax:x.max()-x.min()#将其应用于我们刚刚在上面创建的dframe。apply(fn)isin()lsin()用于过滤数据帧.Isin()有助于选择特定列中具有特定值(或倍数)的行。#使用我们为read_csvfilter1=df["value"].isin([112])创建的数据框filter2=df["time"].isin([1949.000000])df[filter1&filter2]copy()Copy()函数用于复制Pandas对象。当一个数据帧被分配给另一个数据帧时,如果其中一个数据帧发生变化,另一个数据帧的值也会发生变化。为防止此类问题,可以使用copy()函数。#创建样本系列data=pd.Series(['India','Pakistan','China','Mongolia'])#Assigningissuethatwefacedata1=data#Changeavaluedata1[0]='USA'#Alsochangesvalueinolddataframedata#为了防止这种情况,我们使用#creatingcopyofseriesnew=data.copy()#assigningnewvaluesnew[1]='Changedvalue'#printingdataprint(new)print(data)select_dtypes()select_dtypes()的作用是根据dtypes的列返回dataframe的列的子集。该函数的参数可以设置为包括具有特定数据类型的所有列,或排除具有特定数据类型的列。#我们将使用与read_csvframex=df.select_dtypes(include="float64")#相同的数据框#仅返回时间列最后,pivot_table()也是Pandas中一个非常有用的函数。如果你知道excel中pivot_table()的用法,那么上手是非常容易的。#创建一个样本dataframeschool=pd.DataFrame({'A':['Jay','Usher','Nicky','Romero','Will'],'B':['Masters','Graduate','Graduate','Masters','Graduate'],'C':[26,22,20,23,24]})#让我们创建一个数据透视表来根据年龄和coursetable隔离学生=pd.pivot_table(school,values='A',index=['B','C'],columns=['B'],aggfunc=np.sum,fill_value="NotAvailable")表