数据分析入门到实战-金融量化分析

thu-blogger
清华大学电子系,获得了本科和博士学位。毕业之后一直在国内外知名的对冲基金从事量化投资相关的工作,熟悉Python在金融数据分析和量化投资的应用。撰写这个专刊,在帮助自己温故知新的同时,能够帮助到想要从事金融数据分析工作的学生或是打算转到量化投资行业的在职人士。
立即订阅 2160学习

第2章 第1节 Python安装与调试工具

去手机阅读

Python安装

我们可以直接在Python的官方网站上下载Python的安装包,其中包含了核心的模块(Module)和库(Package)。当我们需要使用其他第三方库时,可以使用pip安装或者使用源码安装。

另一种Python的安装方式是直接安装Anaconda的发行版本。作为包管理器和环境管理器,Anaconda包含了conda、Python在内的超过180个科学计算包及其依赖项,可以便捷获取各种Package并进行管理,也可以对Python的编程环境进行统一管理。简单来说:Anaconda = Python + Packages + IDE,这里Python代表Python核心模块和库,Packages代表常见的numpy,scipy,pandas,matplotlib等库,IDE(Integrated Development Environment)代表集成开发环境,包括Spyder和我们接下来要介绍的PyCharm和Jupyter Notebook,我们的代码都是在IDE中编写和调试的。PyCharm和Jupyter Notebook比较如下:

  • PyCharm:
    • 优点:调试功能强大,适合大型功能的开发;
    • 缺点:冷启动慢;占用内存更大;界面更复杂,交互显示差一些。
  • Jupyter Notebook
    • 优点:说明文本、数学方程、代码和可视化内容全部组合到一个易于分享的文档中,非常适合交互(例如绘图的显示)和代码的学习(注:我们也会以Jupyter Notebook的显示方式进行Python的学习);
    • 缺点:调试功能弱,查看变量基本靠打印出来;代码被分散到不同Cell中,存在长段代码被割裂的可能;所有的代码在一个文件中,没有模块化和工程化。

Anaconda的安装方式更加便利,但是可能会包含很多不被使用的第三方模块,白白占用计算机的存储空间。

因为Python 2.7的官方支持即将到期,很多重要的Package也渐渐不支持Python 2.7版本,接下来我们将安装和使用Python 3.7版本。

安装建议: 对于没有其他编程语言经验的初学者,建议安装Anaconda的发行版本,使用其中的Jupyter Notebook进行代码的学习;对于有其他编程语言经验、习惯使用IDE开发大型程序的学习者,建议直接安装Python的核心模块+自己需要使用的第三方库+PyCharm进行代码的学习。

Python安装过程

我们首先演示如何直接安装Python。首先来到Python的下载页面:https://www.python.org/downloads/

在这个页面上,针对不同的Windows、macOS、Linux/UNIX操作系统,我们可以看到需要下载不同的安装包。
64位Windows版本下载Windows x86-64 executable installer:https://www.python.org/downloads/windows/
图片说明

64位MacOS版本下载macOS 64-bit installer:https://www.python.org/downloads/mac-osx/
图片说明

Linux/UNIX下载Gzipped source tarball或者XZ compressed source tarball:https://www.python.org/downloads/source/
图片说明

因此大家在安装Python时,需要注意根据自己的电脑的配置(什么操作系统,32位还是64位)来选择合适的安装包进行下载。安装的过程是类似的,我们以Windows版本的Python 3.7安装包为例,给大家说明安装的流程。记得勾选Add Python 3.7 to PATH,这样Python就会被加入到环境变量,可以直接在cmd窗口中调用:
图片说明

然后选择Customize installation:
图片说明

选择Next,在这里要选择安装的路径:
图片说明

接下来点击Install等待安装完成就可以。

当我们要安装其他Package时,可以在cmd窗口中使用pip命令:

  • 当我们想要安装一个Package时,使用pip install packagename==version,例如pip install tensorflow-gpu==1.12.0;
  • 当我们想要升级一个已经安装了的Package时,使用pip install --upgrade packagename,例如pip install tensorflow-gpu;
  • 当我们想要卸载一个已经安装了的Package时,使用pip uninstall packagename,例如pip uninstall tensorflow-gpu;
  • 当我们想要查看所有已经安装的Package的列表时,使用pip list

Anaconda安装过程

首先我们打开Anaconda的下载页面:https://www.anaconda.com/distribution/#download-section

这里我们看到有Windows、macOS、Linux的安装包可以切换,不同操作系统对应的安装包的安装流程是类似的。我们以Windows版本为例,选择下载Python 3.7 Version对应的64-Bit Graphical Installer (486 MB):
图片说明

安装过程跟一般的软件过程类似,双击下载的exe文件进行安***r>图片说明

图片说明

这里选择默认的配置就好:
图片说明

这里选择安装的目录:
图片说明

这里会提示说路径中包含一个空格,可能之后在一些应用中会有潜在的问题,因此大家也可以选择安装到一个不含空格的路径中。
图片说明

图片说明

图片说明

图片说明

这些不感兴趣的都不需要去了解,直接去掉勾选,然后选择Finish就好:
图片说明

PyCharm安装方法

直接安装方式和Anaconda安装方式都不包含PyCharm,我们需要到PyCharm的网站上下载PyCharm的安装包:https://www.jetbrains.com/pycharm/download/#section=windows
图片说明

我们看到PyCharm提供了付费的专业版(Professional)和免费的社区版(Community)。与社区版相比,专业版提供了更多的功能(例如Web开发,Python Web框架,Python的探查,远程开发能力,数据库和SQL支持等)。作为学习,我们下载免费的社区版安装使用就好。

打开安装包:
图片说明

点击Next,选择安装路径:
图片说明

点击Next:
图片说明

点击Next:
图片说明

点击Install,等待安装完成后点击Finish:
图片说明

PyCharm基本使用方法

安装完成后我们双击图标打开PyCharm,这里我们是第一次使用,不用引入设置:
图片说明

点击接受协议和不发送Data之后,可以选择自己喜欢的UI主题:
图片说明

然后点击Start Using PyCharm:
图片说明

点击Create New Project:
图片说明

在这里选择工程目录和使用的Python解释器,这里我们选择了Anaconda安装的python.exe:
图片说明

点击Create之后进入主界面,在工程名称上右键调出菜单栏,选择创建一个新的Python File:
图片说明

我们命名新创建的文件为test.py,然后加入一小段代码,例如print('Hello World'),在菜单栏中选择Run->Run,就可以运行这个Python程序了:

图片说明

图片说明

这样在下面的控制台我们就可以看到程序的运行结果:
图片说明

接下来我们来看如何在PyCharm中调试代码。在调试代码时,我们首先在程序中设置断点,当程序跑到设置的断点位置,会中断下来,我们可以查看之前运行过的所有程序变量。在PyCharm中,我们在点击要设置断点的那一行代码的左侧,出现红点就代表我们设置了断点:
图片说明

设置完断点后,我们在代码文件的空白处点击右键,选择Debug:
图片说明

这样在下方的控制台就会出现Debugger的界面:
图片说明

在Debugger的界面中,我们常用的是如下图红色框中的几个功能:
图片说明

从左到右分别是:

  • Step Over (F8):步过,在单步执行时,不会进入子函数,而是把子函数整个作为一个步骤进行执行;
  • Step Into (F7):步入,可以进入函数内部;
  • Step Into My Code (Alt + Shift + F7):在单步执行时,遇到子函数就进入并且继续单步执行,不会进入到底层源码中;
  • Force Step Into (Alt+Shift+F7):强制步入,包括进入官方类库的函数;
  • Step Out (Shift + F8):步出,从步入的函数内退出到函数调用处,此时函数已经执行完毕,但没有完成赋值;
  • Run to Cursor (Alt+F9):运行到你定位的光标处,而不需要打断点。

当我们执行Step Over后,就可以看到b = 2这一行代码被执行,将2赋值给变量b:
图片说明

类似的,再执行一次,就会看到变量c也被创建了:
图片说明

当我们执行完代码后,就可以点击Debugger旁边的Console,切换窗口,看到我们打印出了c的取值为3:
图片说明

当我们有更加复杂的函数时,可以使用Step Into等功能进行调试。以上就是PyCharm基本的使用方法。

Jupyter Notebook基本使用方法

Anaconda的安装方式中直接包含了Jupyter Notebook,如果是直接安装了Python,则可以通过pip install jupyter进行安装,不过可能会有依赖项的问题,因此推荐大家使用Anaconda安装的方式。

在开始菜单栏通过搜索找到Jupyter Notebook这个应用程序,可以直接打开。打开之后会自动调用默认浏览器,如果没有的话也可以手动打开浏览器,输入Jupyter Notebook这里显示的URL:
图片说明

在浏览器中的界面是这样的:
图片说明

或者也可以在开始菜单栏中通过搜索找到anaconda prompt这个命令行窗口,切换目录到你想要打开和保存notebook的路径下,然后输入命令"jupyter notebook",也可以打开Jupyter Notebook:

图片说明

图片说明

这种打开方式的好处是,打开之后就会进入我们的工作目录。可以看到这里是我新建的一个文件夹,目前还没有代码文件。我们点击右上角的New按钮,然后点击Python 3新建一个Notebook文件:
图片说明

然后浏览器会自动打开一个窗口,显示我们编辑notebook,也是运行代码和查看结果的界面:
图片说明

我们从上往下来看一下这个界面的设置。首先最上面一行中Untitled可以点击之后更新Notebook的文件名,例如我们这里改成L0,然后点击“重命名”:
图片说明

然后是下面一行菜单栏,例如File菜单中也有Rename功能。然后常用的是Download as-> HTML(.html),将notebook文件导出为html文件方便其他人查看:
图片说明

在Edit菜单中主要是对Notebook的基本单元Cell的一些添加、移动和删除操作:
图片说明

Insert菜单中主要就是添加Cell的操作,也是我们经常会用到的:
图片说明

Cell菜单中主要是运行我们编写的Markdown标记语言和Python代码,然后将结果呈现到Notebook中:
图片说明

如果之后要清除所有Cell的输出,也是在Cell菜单中操作,例如All Output->Clear,就会把所有的运行结果都清空:
图片说明

Kernel菜单主要用于重新启动这个notebook:
图片说明

下面一行图标分别对应一些快捷操作:
图片说明

即:保存并检查(直接用快捷键Ctrl+S也可以);在下面插入代码块;剪切选择的代码块;复制选择的代码块;粘贴到下面;上移选中单元格;下移选中单元格;运行;中断服务;重启服务;重启服务,然后运行整个代码

后面还有一个选项,来表示我们要操作的单元格Cell是Python代码还是Markdown标记:
图片说明

我们接下来演示插入一小段代码和一小段标记来让大家感受它们之间的区别。我们下面看到的就是一个被选中的Cell,最左边显示为浅蓝色,代表此时处于命令模式(command mode)
图片说明

当我们按Enter键之后就会进入编辑模式(edit mode),此时最左边显示为绿色,这个时候我们就可以在文本编辑框里面输入我们的代码了:
图片说明

比如我们输入一小段代码

a = 1
a

然后点击菜单栏中的运行,或者是使用快捷键Alt+Enter,就会看到代码对应的默认输出,也就是变量a的值:
图片说明

In [1]和 Out[1]中的数字1可以帮助我们记住运行代码块的历史顺序。然后我们对于下面出现的新的Cell,我们在上面的选项中将代码换成标记,就会看到此时最左边In []消失,代表此时我们要编辑的已经不是Python代码了:
图片说明

类似的,我们按Enter键进入编辑模式,然后输入一段MarkDown格式的文字,例如“这是一段**MarkDown**文字”,然后按运行就会看到此时显示的是:
图片说明

可以看到MarkDown已经加粗了。如果要重新编辑这一个Cell的话,再鼠标点击选中这个Cell,按Enter键回到编辑模式即可。

在我们利用Notebook配合MarkDown标记语言编写Python代码的好处是,每一段代码运行的结果都可以很方便地查看,而通过MarkDown也可以加很多的注释和说明,方便读者去了解代码的具体功能。每一个Notebook在运行的过程中,Cell与Cell之间是共享一个环境的,也就是说在上一个Cell中导入的库或者定义的变量,在下一个Cell中还能够继续使用。另外,Jupyter Notebook还提供了一系列的快捷键来帮助大家更方便地使用,这些快捷键大家可以在之后的学习和使用过程中慢慢熟悉。

qrcode
下载牛客APP随时随地学习