当前位置: 首页 > 后端技术 > Python

数据分析相关的8个Python库盘点(示例+代码)

时间:2023-03-26 17:02:38 Python

简介:Python中经常会用到一些专门的库,比如NumPy、SciPy、Pandas和Matplotlib。数据处理常用NumPy、SciPy、Pandas,数据分析常用Pandas和Scikit-Learn,数据可视化常用Matplotlib,Pyspark可调用Spark集群资源进行大规模分布式挖掘数据。从某种程度上说,学习Python数据分析主要就是学习使用这些分析库。01NumPy关于NumPy,本节主要介绍ndarray多维数组对象和数组属性。ndarray多维数组对象NumPy库中的ndarray是一个多维数组对象,由两部分组成:实际数据值和描述这些值的元数据。大多数数组操作仅涉及修改元数据,并不更改底层实际数据。数组中的所有元素必须是同一类型,因此如果知道其中一个元素的类型,就很容易确定数组所需的存储空间。您可以使用array()函数创建一个数组,并通过dtype获取其数据类型。importnumpyasnpa=np.array(6)a.dtypeoutput:dtype('int64')在上面的例子中,数组a的数据类型是int64。如果使用32位Python,则获取的数据类型可能是int32。数组属性NumPy数组有一个重要的属性——维度(dimension),它的维度叫做秩(rank)。以二维数组为例,一个二维数组相当于两个一维数组。只看最外层,相当于一个一维数组,一维数组中的每一个元素也是一个一维数组。那么,这个一维数组就是二维数组的轴。理解了以上概念之后,我们再来看一下NumPy数组中比较重要的ndarray对象的属性:是一个矩阵,比如n×m矩阵输出为n行m列ndarray.size:数组元素总数,相当于.shape中n×m的值ndarray.dtype:ndarray对象的元素类型ndarray.itemsize:ndarray对象中每个元素的大小Size,以字节为单位ndarray.flags:ndarray对象的内存信息ndarray.real:ndarray元素的实部ndarray.imag:虚部ndarray元素的一部分ndarray.data:包含实际数组元素的缓冲区,因为一般通过数组的索引来获取元素,所以通常不需要使用该属性。02MatplotlibMatplotlib是Python数据分析中常用的绘图库,常用于绘制各种数据的可视化效果图。其中matplotlib.pyplot包含了简单的绘图功能。实战:绘制多项式函数为了说明绘图的原理,我们来画一下多项式函数的形象。使用NumPy的多项式函数poly1d()创建多项式。#引入需要的库importnumpyasnpiimportmatplotlib.pyplotasplt#使用polyld()函数创建多项式func=1x3+2x2+3x+4func=np.poly1d(np.array([1,2,3,4]).astype(f?loat))#利用NumPy的linspace()函数生成30个-10到10之间均匀分布的值作为函数x轴的值x=np.linspace(-10,10,30)#将x的值代入func()函数计算y值y=func(x)#调用pyplot的plot函数()绘制函数图像plt.plot(x,y)#使用xlable()函数添加x轴标签plt.xlabel('x')#使用ylabel()函数添加y轴标签plt.ylabel('y(x)')#调用show()函数显示函数imageplt.show()多项式函数绘制结果如图2-13所示。▲图2-13多项式函数作图练习:画出正余弦值可以清楚的看出两种效果图的区别,可以将两种效果图合二为一进行展示。Matplotlib中的subplot()函数允许在一张图中显示多个子图。subplot()中常用的三个整型参数分别是子图的行数、子图的列数、子图的索引。以下示例将绘制正弦和余弦两个函数的图形。#导入相关包importnumpyasnpiimportmatplotlib.pyplotaspltfrommatplotlib.pyplotimportf?iguref?igure(num=None,f?igsize=(12,8),dpi=80,facecolor='w',edgecolor='k')#计算正余弦曲线上点的x和y坐标x=np.arange(0,3*np.pi,0.1)y_sin=np.sin(x)y_cos=np.cos(x)#subplot3个参数2,1,1表示在2行1列的图像中绘制第一个subplotplt.subplot(2,1,1)#Drawthefirstsubplot#Drawthefirstimageplt.plot(x,y_sin)plt.title('Sin')plt.subplot(2,1,2)#在2行1列的图像中绘制第二个子图plt.plot(x,y_cos)plt.title('Cos')plt.show()#显示图像正余弦函数的绘制结果如图2-14所示。▲图2-14正余弦函数绘图03PySpark在大数据应用场景中,当我们面对海量数据和复杂模型的庞大计算需求时,单机环境已经难以承载,分布式计算环境需要完成机器学习任务。ApacheSpark是一个快速而强大的框架,可以对弹性数据集进行大规模分布式处理。通过图2-15所示的ApacheSpark架构图可以很清楚地看出其组成。▲图2-15ApacheSpark架构图Spark支持丰富的数据源,可以适应大多数大数据应用场景。同时通过Spark核心统一调度计算资源。由于计算的数据存储在内存中,提高了计算效率。大大提高。Spark支持的原生语言是Scala,但为了丰富应用场景和满足各种开发者的语言偏好,Spark还支持Java、Python和R。PySpark是Spark社区发布的一个工具包,在Spark中支持Python框架,其计算速度和能力与Scala相似。通过PySpark调用SparkAPI,配合MLlib和ML库,可以轻松进行分布式数据挖掘。MLlib库是Spark传统的机器学习库,目前支持四种常见的机器学习问题:分类、回归、聚类和协同过滤。MLlib的所有算法都是基于Spark独特的RDD(ResilientDistributedDataset,弹性分布式数据集)数据结构。由于RDD不能很好地满足更复杂的建模需求,ML库应运而生。与MLlib库相比,ML库更新。充分利用基于数据框(DataFrame)的API进行操作,可以提供更全面的机器学习算法,并且支持静态类型分析,可以及时发现编程过程中的错误,无需等待代码运行.除了上面介绍的库,Python还有一些其他常用的库。下面分别介绍一下。04SciPySciPy是一个开源算法库和数学工具包,它基于NumPy并扩展了NumPy的功能。SciPy包括线性代数、积分、插值、特殊函数、快速傅里叶变换等常用函数,其功能类似于软件MATLAB、Scilab、GNUOctave。Scipy经常和Numpy结合使用,可以说大部分Python的机器学习库都依赖于这两个模块。05PandasPandas提供了强大的数据读写功能、先进的数据结构和各种分析工具。这个库的一大特点是可以用一两个命令完成复杂的数据操作。Pandas中最基本的数据结构是Series,用来表示一行数据,可以理解为一维数组。另一个关键的数据结构是DataFrame,用来表示二维数组,与R语言中的data.frame非常相似。Pandas有许多用于分组、过滤和合并数据的内置函数,而且这些函数都非常快。Pandas具有独特的时序数据分析机制,可用于时间数据的灵活分析和管理。06Scikit-LearnScikit-Learn是一个基于NumPy、SciPy和Matplotlib的开源机器学习工具包。它功能强大且易于使用。是Kaggle玩家经常使用的学习库。主要涵盖分类、回归和聚类算法,如SVM、逻辑回归、朴素贝叶斯、随机森林、K-means、数据降维处理算法等。官方文档比较齐全,更新及时。Scikit-Learn基于Numpy、SciPy等Python数值计算库,提供高效的算法实现,并为所有算法提供一致的接口调用规则,包括KNN、K-means、PCA等,接口简单易用。07TensorFlowTensorFlow是谷歌的开源数值计算框架,也是最流行的神经网络分析系统。它采用数据流图的方法,可以灵活构建多种机器学习和深度学习模型。08KerasKeras是一个处理神经网络的高级库,可以运行在TensorFlow和Theano上,现在发布的新版本可以使用CNTK或者MxNet作为后端。Keras简化了许多特定任务并大大减少了样板代码的数量。目前主要应用于深度学习领域。更多学习干货,可以前往公众号【Python编程学习圈】了解更多,还有大量系统学习资料免费提供,欢迎关注收藏!