当前位置: 首页 > 科技观察

7个重要的Python库盘点

时间:2023-03-12 08:00:07 科技观察

01NumPyhttp://numpy.orgNumPy是NumericalPython的缩写,是Python数值计算的基石。它提供了多种数据结构、算法以及涉及Python的数值计算所需的大部分接口。NumPy包括以下内容:快速、高效的多维数组对象ndarray逐元素数组计算或数组之间的数学运算函数用于在磁盘上读取和写入基于数组的数据集的工具线性代数运算、傅里叶变换和随机数生成成熟的C允许Python扩展和本机C或C++代码访问NumPy的数据结构和计算工具的语言API。除了NumPy为Python带来的快速数组处理能力外,NumPy的另一个主要用途是作为算法和库之间传递数据的数据容器。对于数字数据,NumPy数组可以比Python的内置数据结构更有效地存储和操作数据。此外,用低级语言编写的库,例如用C或Fortran编写的库,可以直接对存储在NumPy数组中的数据进行操作,而无需将数据复制到其他内存中。因此,很多Python数值计算工具都使用NumPy数组作为基本数据结构,或者与NumPy无缝互操作。02pandashttp://pandas.pydata.orgpandas提供高级数据结构和函数,旨在使处理结构化表格数据变得快速、简单且富有表现力。它出现于2010年,帮助Python成为一个强大高效的数据分析环境。常用的pandas对象是DataFrame,它是一种表格形式的、面向列的数据结构,使用行和列标签;和系列,一维标记数组对象。pandas结合了表和关系数据库(如SQL)灵活的数据操作能力和NumPy的高性能数组计算的概念。它提供了复杂的索引功能,使数据重组、切块、切片、聚合和子集选择变得更加容易。由于数据操作、预处理和清理是数据分析中的重要技能,因此pandas将是一个重要的主题。介绍一下背景知识,早在2008年,我在量化投资公司AQRCapitalManagementCompany工作时就开始了pandas的开发。当时,我有一些工具列表中的任何单一工具都无法满足的独特需求:带有标记轴的数据结构,支持自动或显式数据对齐功能——这可以防止数据未对齐和不同数据源之间的差异常见索引数据导致的错误集成时间序列函数能够处理时间序列和非时间序列数据统一的数据结构,保留元数据算术运算,简化对缺失数据的灵活处理流行的数据库(例如基于SQL的数据库)我想在同一个地方完成以上工作,最好使用具有通用软件开发能力的语言。Python是一个很好的候选者,但当时并没有一套完整的此类数据结构,也没有可以提供相关功能的工具。因此,pandas最初是为解决财务和业务分析问题而开发的,而pandas特别擅长深度时间序列和处理业务流程中产生的时间索引数据。DataFrame这个名字对于使用R语言进行统计计算的用户来说会很熟悉,因为这个对象是以类似的Rdata.frame对象命名的。与Python不同的是,数据框是R中标准库的一部分。因此,pandas中的许多特性通常与R核心实现或R的附加库提供的功能一致。pandas名字的由来是面板数据,这是计量经济学中的一个术语,指的是多维结构化数据集。pandas也是Python数据分析(Pythondataanalysis)本身的简写短语。03matplotlibhttp://matplotlib.orgmatplotlib是一个非常流行的用于绘图和其他二维数据可视化的Python库。它由JohnD.Hunter创建,目前由大量开发人员维护。matplotlib被设计为适合发布的绘图工具。还有其他适用于Python程序员的可视化库,但matplotlib仍然是使用最广泛的,并且与生态系统中的其他库集成得很好。我认为将其设置为默认可视化工具是一个安全的选择。更详细的matplotlib讲解请戳:纯干货:教你如何用Python进行数据可视化(附代码)04IPython和Jupyterhttp://ipython.orghttp://jupyter.orgIPython项目始于2001年和由FernandoPérez发起,旨在开发更具交互性的Python解释器。在过去的16年里,它已经成为Python数据堆栈中最重要的工具之一。尽管它本身不提供任何计算或数据分析工具,但其设计侧重于最大限度地提高交互式计算和软件开发的生产力。它使用执行-探索工作流程,而不是其他语言中常见的典型编辑-编译-运行工作流程。它还为操作系统命令行和文件系统提供了一个易于使用的界面。由于数据分析编码涉及大量的探索、试验、错误和遍历,IPython可以让您更快地完成。2014年,Fernando和IPython团队发布了Jupyter项目。Jupyter项目旨在为更多语言设计一个交互式计算工具。IPythonwebnotebook成为Jupyternotebook,可以支持40多种编程语言。IPython系统目前可用作在Jupyter中使用Python的内核(一种编程语言模式)。IPython本身已经成为Jupyter开源项目的一个组件,它提供了一个交互式、探索性和生产性的环境。IPtyhon最古老、最简单的“模式”是Python命令行的增强版,用于提高编写、测试和调试Python代码的速度。您还可以通过基于Web的多语言代码“笔记本”——JupyterNotebook使用IPython系统。IPython命令行和Jupyter笔记本对于数据探索和可视化非常有用。Jupyter笔记本系统允许您使用Markdown和HTML创建包含代码和文本的丰富文档。其他编程语言也为Jupyter实现了内核,让你可以在Jupyter中使用多种语言,而不仅仅是Python。就我个人而言,IPython涉及我的大部分工作,包括运行、调试和测试代码。05SciPyhttp://scipy.orgSciPy是科学计算领域不同标准问题领域的包集合。以下是SciPy中包含的一些软件包:scipy.integrate数值积分例程和微分方程求解器scipy.linalg线性代数例程和基于numpy.linalg的矩阵分解scipy.optimize函数优化器(最小化器)和求根器算法scipy.signal信号处理工具scipy.sparse稀疏矩阵和稀疏线性系统求解器scipy.specialSPECFUN的包装器。SPECFUN是一个用Fortran语言实现通用数据函数的包,例如gamma函数。scipy.stats标准的连续和离散概率分布(密度函数、采样器、连续分布函数)、各种统计检验、各种描述性统计。SciPy与NumPy一起为许多传统的科学计算应用提供了合理、完整和成熟的计算基础。06scikit-learnhttp://scikit-learn.orgscikit-learn项目诞生于2010年,已经成为Python程序员首选的机器学习工具包。在短短七年时间里,scikit-learn在全球拥有1,500名代码贡献者。它包含以下子模块。分类:SVM、最近邻、随机森林、逻辑回归等回归:Lasso、岭回归等聚类:k-means、谱聚类等降维:PCA、特征选择、矩阵分解等模型选择:网格搜索、交叉验证、指标矩阵预处理:特征提取、规范化scikit-learn与pandas、statsmodels、IPython一起使Python成为一种高效的数据科学编程语言。07statsmodelshttp://statsmodels.orgstatsmodels是一个统计分析包。它源于斯坦福大学统计学教授乔纳森泰勒使用R语言实现的各种分析模型。SkipperSeabold和JosefPerktold早在2010年就创建了新的statsmodels项目。此后该项目发展迅速,拥有大量活跃用户和贡献者。NathanielSmith开发了Patsy项目,该项目为R语言公式系统驱动的statsmodels包提供了公式和模型规范框架。与scikit-learn相比,statsmodels包含了经典的(高频词汇)统计学和经济学算法。它包含的模型如下。回归模型:线性回归、一般线性模型、稳健线性模型、线性混合效应模型等方差分析(ANOVA)时间序列分析:AR、ARMA、ARIMA、VAR等模型非参数方法:KernelDensityEstimation,KernelRegressionStatisticalModelResultvisualizationstatsmodels更侧重于统计推断,提供不确定性评估和p值参数。相比之下,scikit-learn更侧重于预测。