我使用python这门语言也有三年了,被其简洁、易读、强大的库所折服,我已经深深爱上了python。其pythonic语言特性,对人极其友好,可以说,一个完全不懂编程语言的人,看懂python语言也不是难事。
在数据分析和交互、探索性计算以及数据可视化等方面,相对于戚困卖R、MATLAB、SAS、Stata等工具,Python都有其优势。近年来,由于Python库的不断发展(如pandas),使其在数据挖掘领域崭露头角。结合其在通用编程方面的强大实力,我们完全可以只使用Python这一种语言去构建以数据为中心的应用程序。
由于python是一种解释性语言,大部分编译型语言都要比python代码运行速度快,有些同学就因此鄙视python。但是小编认为,python是一门高级语言,其生产效率更高,程序员的时间通常比CPU的时间值钱,因此为了权衡利弊,考虑用python是值得的。
Python强大的计算能力依赖于其丰富而强大的库:
Numpy
Numerical Python的简称,是Python科学计算的基础包。其功能:
1. 快速高效的多维数组对象ndarray。
2. 用于对数组执行元素级计算以及直接对数组执行数学运算的函数。
3. 线性代数运算、傅里叶变换,以及随机数生成。
4. 用于将C、C++、Fortran代码集成到Python的工具。
除了为Python提供快速的数组处理能力,NumPy在数据分析方面还有另外一个主要作用,即作为在算法之间传递数据的容器。对于数值型数据,NumPy数组在存储和处理数据时要比内置的Python数据结构高效尺瞎得多。此外,由低级语言(比如C和Fortran)编写的库可以直接操作NumPy数组中的数据,无需进行任何数据复制工作。
SciPy
是一组专门解决科学计算中各种标准问题域的包的集合,主要包括下面这些包:
1. scipy.integrate:数值积分例程和微分方程求解器。
2. scipy.linalg:扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能。
3. scipy.optimize:函数优化器(最小化器)以及根查找算法。
4. scipy.signal:信号处理工具。
5. scipy.sparse:稀疏矩阵和稀疏线性系统求解器。
6. scipy.special:SPECFUN(这是一个实现了许多常用数学函数(如伽玛函数)的Fortran库)的包装器。
7. scipy.stats:标准连续和离散概率分布(如密度函数、采样器、连续分布函数等)、各种统计检验方法,以及更好的描述统计法。
8. scipy.weave:利用内联C++代码加速数组计算的工具。
注:NumPy跟SciPy的有机结合完全可以替代MATLAB的计算功能(包括其插件工具箱)。
SymPy
是python的数学符号计算库,用它可以进行数学表达式的符号推导和演算。
pandas
提供了使我们能够快速便捷地处理结构化数据的大量数据结构和函数。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
pandas兼具NumPy高性能的数组计算功能以及电子表格和关系型数据库(如SQL)灵活的数据处理功能。它提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作。
对于使用R语言进行统计计算的用户,肯定不会对DataFrame这个名字感到陌生,因为它源自于R的data.frame对象。但是这两个对象并不相同。R的data.frame对象所提供的功能只是DataFrame对象所提供的功能的一个子集。也就是说pandas的DataFrame功能比R的data.frame功能更强大。
matplotlib
是最流行的用于绘制数据图表的Python库。它最初由John D. Hunter(JDH)创建,目前由一个庞大的开发人员团队维护。它非常适合创建出版物上用的图表高逗。它跟IPython(马上就会讲到)结合得很好,因而提供了一种非常好用的交互式数据绘图环境。绘制的图表也是交互式的,你可以利用绘图窗口中的工具栏放大图表中的某个区域或对整个图表进行平移浏览。
TVTK
是python数据三维可视化库,是一套功能十分强大的三维数据可视化库,它提供了Python风格的API,并支持Trait属性(由于Python是动态编程语言,其变量没有类型,这种灵活性有助于快速开发,但是也有缺点。而Trait库可以为对象的属性添加检校功能,从而提高程序的可读性,降低出错率。) 和NumPy数组。此库非常庞大,因此开发公司提供了一个查询文档,用户可以通过下面语句运行它:
>>> from enthought.tvtk.toolsimport tvtk_doc
>>> tvtk_doc.main()
Scikit-Learn
是基于python的机器学习库,建立在NumPy、SciPy和matplotlib基础上,操作简单、高效的数据挖掘和数据分析。其文档、实例都比较齐全。
小编建议:初学者使用python(x, y),其是一个免费的科学和工程开发包,提供数学计算、数据分析和可视化展示。非常方便!