点击关注异步图书,置顶公众号html
天天与你分享 IT好书 技术干货 职场知识node
参与文末话题讨论,每日赠送异步图书python
——异步小编程序员
欢迎来到Python数据分析的世界!现在,Python已成为数据分析和数据科学事实上的标准语言和标准平台之一。咱们将为读者展现一张思惟导图,图1-1中将给出Python生态系统为数据分析师和数据科学家提供的各类程序库。NumPy、SciPy、Pandas和Matplotlib库共同构成了Python数据分析的基础,当前它们已经成为SciPy Stack 1.0的组成部分。在本文中,咱们不只会学习如何安装SciPy Stack 1.0和Jupyter Notebook,还将编写一些简单的数据分析代码,为后面的学习作好热身。算法
下面是Python生态系统为数据分析师和数据科学家提供的经常使用程序库。shell
●NumPy:这是一个通用程序库,不只支持经常使用的数值数组,同时提供了用于高效处理这些数组的函数。数据库
●SciPy:这是Python的科学计算库,对NumPy的功能进行了大量扩充,同时也有部分功能是重合的。Numpy和SciPy曾经共享基础代码,后来分道扬镳了。编程
●Pandas:这是一个用于数据处理的程序库,不只提供了丰富的数据结构,同时为处理数据表和时间序列提供了相应的函数。数组
●Matplotlib:这是一个2D绘图库,在绘制图形和图像方面提供了良好的支持。当前,Matplotlib已经并入SciPy中并支持NumPy。服务器
●IPython:这个库为Python提供了强大的交互式Shell,也为Jupyter提供了内核,同时还支持交互式数据可视化功能。咱们将在本文稍后介绍IPython shell。
●Jupyter Notebook:它提供了一个基于Web的交互式shell,能够建立和共享支持可实时代码和可视化的文档。Jupyter Notebook经过IPython提供的内核支持多个版本的Python。本文稍后将会为读者进一步介绍Jupyter Notebook。
对于本文而言,当须要安装软件时,咱们会在恰当的时机给出相应的安装说明。在安装软件的过程当中遇到困难或者不能判定最佳方案时,读者能够参考图1-1,这里提供了寻找解决问题所需辅助信息的指南。
图1-1
本文将涉及如下主题。
●安装Python 3
●将IPython用做shell
●阅读手册页
●Jupyter Notebook
●NumPy数组
●一个简单的应用
●何处寻找帮助和参考资料
●列出Python库中的模块
●利用matplotlib可视化数据
本文所用软件都是基于Python 3的,因此必须首先安装Python 3。不过,对于某些操做系统而言,Python 3是默认安装的。Python具备多种实现,其中包括具备商业版权的实现和发行版。在本文中,咱们只关注标准Python实现,由于它与NumPy彻底兼容。
提示:
读者能够从https://www.python.org/download/页面下载Python 3.5.x。在这个网站上,咱们能够找到为Windows和Mac OS X系统开发的安装程序,以及为Linux、UNIX和Mac OS X系统提供的源码包。咱们能够从https://docs.python.org/3/using/index.html上找到在各类操做系统上安装和使用Python的相关说明。
本文须要安装的软件,在Windows、各类Linux发行版本和Mac OS X系统上都有相应的二进制安装程序。固然,若是读者愿意,也可使用相应的源代码发行包。对于Python,要求其版本为3.5.x或更高。Python 2.7版本的支持与维护工做已经从2015年延续至2020年,以后,咱们不得不迁移到Python 3。
下面开始介绍如何在Windows、Linux和Mac OS X上安装和设置NumPy、SciPy、Pandas、Matplotlib、IPython和Jupyter Notebook。下面来详细了解一下这个过程。在本文中,咱们将使用pip3来安装这些库。由于从3.4版本起,pip3已经默认包含在Python的安装程序中了。
为了安装这些基础的程序库,能够运行如下命令。
在撰写本文时,咱们在Windows 10虚拟机上安装了如下软件,做为安装这些程序库的先决条件。
●Python 3.6。
●Microsoft Visual C++ Build Tools 2015。
下载并安装适用于Windows平台的、预编译好的NumPy和SciPy二进制文件。
●咱们下载了numpy-1.12.0 + mkl-cp36-cp36m-win_amd64.whl和scipy-0.18.1-cp36- cp36m-win_amd64.whl。
●下载完成后,执行命令pip3 install Downloads umpy-1.12.0 + mkl-cp36-cp36m-win_amd64.whl和pip3 install Downloads\scipy-0.18.1-cp36-cp36m-win_amd64.whl。
安装上述软件后,为了安装其他的基础程序库,能够运行如下命令。
使用这些命令安装Jupyter时,要先安装全部必需的软件包,如Notebook和IPython。
咱们知道,科学家、数据分析师和工程师常常须要进行实验,而IPython正是为实验而生的。对于IPython提供的交互式环境,明眼人一看就知道它与MATLAB、Mathematica和Maple很是接近。
下面是IPython shell的一些特性。
●Tab补全功能(Tab completion),能够帮助查找命令
●历史记录机制
●行内编辑
●利用%run调用外部Python脚本
●访问系统命令
●访问Python的调试工具和分析工具
下面给出IPython shell的使用方法。
●启动会话:要想使用IPython启动会话,须要在命令行中输入如下指令。
退出IPython shell时,可使用quit()函数或者Ctrl+D组合键。
●保存会话:有时咱们可能想要恢复以前作过的实验。对于IPython来讲,这很容易,只要保存了会话,就能够供未来继续使用,具体命令以下。
使用下列命令能够关闭记录功能。
●执行系统的shell命令:在默认状况下,IPython容许经过在命令前面追加“!”号来执行系统的shell命令。举例来讲,咱们输入下面的命令将会获得当前日期。
事实上,任何前置了“!”号的命令行都将发送给系统的shell来处理。此外,能够经过以下方法来存储命令的输出结果。
●显示历史上用过的命令:能够利用%hist命令来显示以前用过的命令,例子以下。
这在命令行接口(Command Line Interface,CLI)环境中是一种很是广泛的功能。此外,咱们还能够用-g开关在历史命令中进行搜索,例子以下。
在上面的过程当中,咱们使用了一些所谓的魔力函数(magic functions),这些函数均以“%”开头。当魔力函数单独用于一行时,就能够省略前缀“%”。
当使用IPython导入相应的程序库后,能够经过help命令打开NumPy函数的手册页——即便不知道该函数的确切名称。咱们能够先输入几个字符,而后利用Tab键就能够自动补全剩下的字符。下面以arange()函数为例,说明如何查阅与其有关的资料。
这里给出两种翻阅相关信息的方法。
调用help函数:输入help命令(并输入函数名中的前几个字符,再按Tab键。这时将出现一个函数列表(见图1-2),咱们能够经过方向键从函数名列表中进行选择,而后按Enter键进行确认),最后按Enter键盘,结束help函数的调用。
经过问号进行查询:另外一种方法是在函数名后面加上问号,固然,前提条件是咱们已经知道函数名,好处是没必要输入help命令,例子以下。
图1-2
Tab补全功能依赖于readline,因此务必确保先前已经安装了该软件。若是没有安装,可使用pip完成安装,具体命令以下。
利用问号,咱们能够从文档字符串(docstrings)中获取所需信息。
upyter Notebook之前被称为IPython Notebooks,它提供了一种以特殊格式建立和共享具备文本、图表和Python代码的网页的工具。
不少时候,notebook都是用于演示Python软件,或者用做一款教学工具。咱们能够单纯使用Python代码或者经过特殊的notebook格式来导入和导出notebook。另外,notebook既能够在本机上跑,也能够放到专用的notebook服务器上在线使用。某些云计算解决方案(如Wakari和PiCloud)还支持在云中运行notebook。云计算的主题将在第11章中加以介绍。
为了使用Jupyter Notebook启动一个会话,读者可使用以下命令。
这时将启动notebook服务器并打开一个网页,显示该命令所在文件夹的内容。而后,你能够在Python 3中选择New | Python 3菜单项来启动一个新的notebook。
你也能够打开本文的代码包中提供的ch-01.ipynb。ch-01是一个notebook文件,其中存放了本文中简单应用程序的代码。
安装好NumPy后,就能够来看NumPy数组了。与Python中的列表相比,进行数值运算时NumPy数组的效率要高得多。事实上,NumPy数组是针对某些对象进行了大量的优化工做。
完成相同的运算时,与Python代码相比,NumPy代码用到的显式循环语句明显要少,由于NumPy是基于向量化的运算。还记得高等数学中标量和向量的概念吗?例如,数字2是一个标量,计算2+2时,进行的是标量加法运算。经过一组标量,咱们能够构建出一个向量。用Python编程的术语来讲,咱们获得了一个一维数组。固然,这个概念能够扩展至更高的维度。实际上,针对两个数组的诸如加法之类的运算,能够将其转化为一组标量运算。使用纯Python时,为了完成该操做,可使用循环语句遍历第一个数组中的每一个元素,并与第二个数组中对应的元素相加。然而,在数学家眼里,这种方法过于繁琐。数学上,能够将这两个向量的加法视为单一操做。实际上,NumPy数组也能够这么作,并且它用低级C例程针对某些操做进行了优化处理,使得这些基本运算效率大为提升。关于NumPy数组将在第2章中详细介绍。
假设要对向量a和b进行求和。注意,这里“向量”的含义是数学意义上的,即一个一维数组。在第4章中,将遇到一种表示矩阵的特殊NumPy数组。向量a存放的是整数0~n−1的2次幂。若是n等于3,那么a保存的是0、1或4。向量b存放的是整数0~n的3次幂,因此若是n等于3,那么向量b等于0、1或者8。若是使用普通的Python代码,该怎么作呢?
在咱们想出了一个解决方案后,能够拿来与等价的NumPy方案进行比较。
下面的函数没有借助NumPy,而是使用纯Python来解决向量加法问题。
下面是利用NumPy解决向量加法问题的函数。
注意,numpysum()无需使用for语句。此外,咱们使用了来自NumPy的arange()函数,它替咱们建立了一个含有整数0~n的NumPy数组。这里的arange()函数也是从NumPy导入的,因此它加上了前缀numpy。
如今到了真正有趣的地方。咱们在前面讲过,NumPy在进行数组运算时,速度是至关快的。但是到底有多快呢?下面的程序代码将为咱们展现numpysum()和pythonsum()这两个函数的实耗时间,这里以μs(微秒)为单位。同时,它还会显示向量sum最后面的两个元素值。下面来看使用Python和NumPy可否获得相同的答案。
对于1000个、2000个和4000个向量元素,程序的结果以下。
显而易见,NumPy的运行速度比等价的常规Python代码要快不少。有一件事情是确定的:不管是否使用NumPy,计算结果都是相同的。可是结果的显示形式仍是有所差异的,numpysum()函数给出的结果不包含逗号。为何会这样?别忘了,咱们处理的不是Python的列表,而是一个NumPy数组。有关NumPy数组的更多内容,将在第2章中详细介绍。
表1-1列出了在本文中讨论过的Python数据分析库的文档网站。
表1-1
流行的软件开发论坛Stack Overflow上也有数以百计的NumPy、SciPy、Pandas、Matplotlib、IPython和Jupyter Notebook方面的讨论。若是读者对这些内容感兴趣,建议进一步学习。
若是你遇到了比较棘手的问题,或者想要持续关注这些程序库的开发进展,能够订阅相应的讨论邮寄列表。订阅后,天天收到的数量不一的邮件,开发者会积极报告这些库的开发进展并热心回答其中的问题。
对于IRC用户,能够在irc://irc.freenode.net找到一个相关的频道,虽然该频道的名字是#scipy,可是这并不妨碍咱们提问NumPy方面的问题,由于SciPy用户通常比较熟悉NumPy,毕竟SciPy是以NumPy为基础的。在这个SciPy频道中,一般有50多位成员保持在线。
ch-01.ipynb文件包含用于查看NumPy、SciPy、Pandas和Matplotlib库中的模块的代码。如今,读者不用担忧这些代码的含义,只要尝试运行一下它们就好了。您能够修改其中的代码以查看其余库中的模块。
本文摘自《Python数据分析(第2版)》
[美]阿曼多·凡丹戈(Armando Fandango) 著
点击封面购买纸书
畅销书升级版,基于Python3。
本书教新手用Python语言分析数据,发挥Python在数据可视化方面的优点,引导读者成为数据分析高手。全书从数据检索、清洗、操做、可视化、存储复杂的分析和建模等方面介绍,重点关注开源模块,如NumPy、SciPy、matplotlib、pandas、IPython、Cython、scikit-learn及NLTK。本书还包括数据可视化、信号处理、时间序列分析、数据库、预测分析和机器学习等主题。
你对本书的见解?为何?截止时间5月31日17时,留言+转发本活动到朋友圈,小编将抽奖选出3名读者 赠送纸书1本和2张e读版80元异步社区代金券,(留言点赞最多的自动得到一张)。异步图书后台回复“5月新书”进入新书交流群,得到第一手新书信息, 点击此处直接参加活动。
推荐阅读
长按二维码,能够关注咱们哟
天天与你分享IT好文。
点击阅读原文,购买《Python应用开发实战》