Python是当今应用最广泛的编程语言之一,以其效率和代码可读性著称。作为一个科学数据的编程语言,Python介于R和java之间,前者主要集中在数据分析和可视化,而后者主要应用于大型应用。这种灵活性意味着Python可以作为一个单一工具来汇集整个工作流。也就是说Python本身是被允许扩充的,并非所有的特性和功能都集成到语言核心中。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。
Python往往是开发人员的首选。他们往往需要在工作中应用统计技术或数据分析,或者需要与Web应用程序交互。特别是,Python在机器学习中的地位,它的机器学习库和灵活性的结合使得Python非常适合开发复杂的模型并可以直接在应用中直接使用。
Python的最大特色之一是其极广泛的程序库(library)。程序库(library)是一个可供使用的各种标准程序、子程序、文件以及它们的目录等信息的有序集合。一组有效的库可以使开发人员在不重写多行代码的情况下编写复杂多任务代码。在本文中,笔者将向您介绍一些在量化金融中最流行的数据分析相关的库。
基本数据分析库文件
这些是将Python从通用编程语言转换为强大的数据分析和可视化工具的基本库,是建立专业化工具的基础。
NumPy是Python中科学计算的基础库,许多库使用NumPy数组作为它们的基本输入和输出。简而言之,NumPy为多维数组和矩阵引入对象,允许开发人员在对这些数组矩阵上执行高级数学和统计功能时尽可能地减少代码的书写。SciPy是在NumPy的基础上添加一系列算法和高级指令来构建和可视化数据。这个软件包括计算积分函数,求解微分方程,优化等等。Pandas增加了用于金融、统计学、社会科学和工程的实际数据分析的数据结构和工具。Pandas可以很好地处理不完整的、混乱的和未标记的数据(即在现实世界中可能遇到的数据类型),并提供用于成形、合并、改造和切片数据集的工具。IPython扩展了Python的交互式解释器的功能,它提供了一个增强的交互式外壳程序,增加了富媒体(Rich Media)、程序脚本、制表符和历史指令的检索。它也作为你的程序的一个嵌入式的解释器,用于程序调试。如果你曾经使用过Mathematica或Matlab,那你应该会对IPython感到满意。matplotlib是创建2D绘图和图形的标准Python库。它的级别很低,这意味着它比起那些更高级的库需要更多的命令来生成漂亮的图形。然而,matplotlib具有灵活性,只要有了足够的命令,你就可以用matplotlib制作任何类型的图形。
机器学习库
机器学习位于人工智能和统计分析的交叉点。通过使用真实数据来训练计算机,我们能够创造出更精确和更复杂的预测算法。下面的库能够赋予Python处理多个机器学习任务的能力,从执行基本的回归运算到复杂的神经网络。
Scikit-learn在NumPy和SciPy上为普通的机器学习和数据挖掘任务添加了一组算法,包括聚类、回归和分类。作为一个程序库,scikit-learn有很多优势。更重要的是,它是一个经过精心提炼的库,这意味着开发者不必在同一算法的不同版本之间进行选择。它的强大和易用性使它深受许多数据密集型初创企业的欢迎,包括Evernote和Spotify等。Theano使用NumPy类似的语法来优化数学表达式。Theano与众不同之处在于,它利用了计算机的GPU,以使数据密集型计算比单独使用CPU快了近100倍。Theano的速度使得它对于深入学习和其他计算复杂的任务特别有利。TensorFlow在机器学习中非常有名,由谷歌开发,是一个训练神经网络的框架。TensorFlow使用一个多层节点系统,允许您快速设置、训练和部署具有大型数据集的人工神经网络。这使得谷歌能够识别照片中的对象,或者在语音识别应用程序中理解口语单词。笔者强烈推荐。
数据挖掘和自然语言处理库
对于许多企业来说,他们所需要的数据不是被动收集的,而是必须从文档或网页中提取出来的。下面的工具是为各种相关任务设计的,从网站上挖掘有价值的信息,将自然语言转换成可以使用的数据。
Scrapy用于创建蜘蛛机器人系统爬行和提取结构化数据,如价格、联系信息和URL。Scrapy最初设计用于网络信息挖掘,也可以从API中提取数据。NLTK是为自然语言处理(NLP)而设计的一套库。NLTK的基本功能允许您标记文本,识别实体,并显示解析树,这些语句就像语句图,揭示了词性及其依赖性。从而你可以做更复杂的事情,如情感分析和自动摘要。Pattern结合了Scrapy和NLTK的功能,用于网页信息挖掘、NLP、机器学习和网络分析的解决方案。它的工具包括网络爬虫;谷歌、Twitter和维基百科的API;以及文本分析算法,如解析树和情感分析,只需几行代码就可以执行。
绘图与可视化库
如果不能清晰地传达给其他人,那么最好的和最复杂的分析是没有意义的。接下来的这些库建立在Matplotlib上,不管你试图做什么样的分析,都能使你轻松地创建更多的视觉上能引人注目和复杂的图形、图表和地图。
Seaborn是一个基于Matplotlib上流行的可视化库。首先你会发现,它的默认样式比Matplotlib更加复杂。除此之外,Seaborn是一个更高级的库,意味着生成某些类型的图表更容易,包括时间序列图等。Bokeh在现代Web浏览器中使用javascript小部件实现交互式、可缩放的绘图。Bokeh的另一个很好的特点是它有三个层次的接口提供给程序开发人员,从高层次的抽象,让您快速生成复杂的情节,到一个低级别的视图,提供最大的灵活性。Basemap通过MatMattLIB的坐标将简单地图添加到MatPuttLB上,并将它们应用到超过25个不同的投影上。库叶进一步在BaseMax上允许创建交互式Web地图,类似于由Bokeh创建的JavaScript部件。NetWorkX允许您创建和分析图表和网络。它能工作于标准和非标准数据格式,这使得它特别有效和具有可扩展性。所有这些都使得NetWorx特别适合于分析复杂的社交网络。
以上列举的这些库是Python开发人员经常使用的。笔者总结归纳在这里希望能帮到大家。
此文系作者原创,如需转载,请注明出处,谢谢!
感谢您的阅读!