《金融建模基础》课件第3章-结合金融时间序列演示pandas 模块编程_第1页
《金融建模基础》课件第3章-结合金融时间序列演示pandas 模块编程_第2页
《金融建模基础》课件第3章-结合金融时间序列演示pandas 模块编程_第3页
《金融建模基础》课件第3章-结合金融时间序列演示pandas 模块编程_第4页
《金融建模基础》课件第3章-结合金融时间序列演示pandas 模块编程_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

结合金融时间序列DESIGNED&WORDPRESSALLBYALONIC主讲老师王海英演示pandas模块编程目录CONTENTS3.1

pandas的数据结构3.2

数据框的可视化3.3

数据框内部的操作3.4

数据框之间的合并3.5

数据框的主要统计函数3.6

本章小结&拓展阅读金融分析与风险管理中很重要的一项任务就是对金融时间序列进行分析,时间序列就是以时间作为索引的数据集合。然而NumPy的数组是无法满足时间序列要求的。因此,需要能够高效处理时间序列的Python第三方模块,从而弥补NumPy的短板。AQR资本管理(AQRCapitalManagement)公司于2008年4月着手开发并在2009年年底发布了pandas,该模块开发的初衷就是作为金融数据分析工具,因此pandas天然包含金融时间序列的各种“基因”。pandas一词源于面板数据(paneldata)与数据分析(dataanalysis)的结合。本章就结合金融时间序列讨论并演示pandas的基本编程。3.1pandas的数据结构1介绍pandas的序列和数据框这两类数据结构,重点讲解如何创建序列和数据框。本章导读2讨论数据框的可视化,包括绘图过程中如何显示中文字体的技巧以及函数plot的具体用法。3探讨数据框内部的操作,包括数据框的基本性质查询、索引、截取、排序和更改等内容。4讲解数据框之间的合并操作,主要涉及concat、merge和join这3个函数的具体运用。5剖析数据框的主要统计函数,包括静态统计函数以及基于移动窗口的动态统计函数。3.1pandas的数据结构pandas的数据结构可以分为两大类,一类是序列,另一类是数据框。这两者有相同之处,也存在着一定的差异。此外,大多数NumPy的函数可以直接应用于这两类数据结构的运算。本章的内容涵盖以下几个主题序列数据框点击输入标题3.1pandas的数据结构序列(series)是一个类似于一维数组的数据结构,不过它由两部分构成:第一部分是索引,也称为标签;第二部分是对应的数值。注意,这两部分的长度必须一致。创建序列可以运用Series函数,并且主要参数有两个:一是参数data,用于输入相关的数据或者变量;二是参数index,用于输入索引。3.1.1序列点击输入标题3.1pandas的数据结构数据框(dataframe)是一个类似于Excel表格的数据结构,设计的初衷就是将序列从原先的一维扩展至多维。数据框由3部分构成:第1部分是行索引,第2部分是列名,第3部分是数值。创建数据框可以运用DataFrame函数,该函数的参数主要有3个:第1个参数data是输入相关的数据或者变量,第2个参数index是输入行索引,第3个参数columns是输入列名。3.1.2数据框3.1.3外部数据的直接导入由于金融时间序列往往涉及比较多的数据,因此通常情况下不会直接输入,而是通过外部数据直接导入的方式完成。外部数据的直接导入主要分为两类,一类是通过外部文件(如Excel、CSV、TXT等格式的文件)导入Python,另一类则是借助外部金融数据终端(如Wind、同花顺等)与Python的应用程序接口(ApplicationProgramInterface,API)导入数据。点击输入标题3.1pandas的数据结构1.从外部文件导入数据点击输入标题3.1pandas的数据结构借助外部金融数据终端(如Wind、同花顺等)与Python的API导入数据时,前提是已经拥有了相应的金融数据终端账号,这里仅以同花顺的iFinD金融数据终端作为示例。用户拥有iFinD金融数据终端账号以后,登录终端并下载Python的数据API(也就是第三方模块iFinDPy)以及《同花顺数据接口用户手册-windows》,iFinDPy模块的安装可以参考该用户手册。2.从外部金融数据终端与Python的API导入数据3.1.4创建序列或数据框的时间数列在金融变量模拟过程中,比如2020年12月31日股市收盘后需要模拟出2021年每个交易日的股价走势,此时首先创建一个时间数列用于对应每日的股价数据。pandas可以通过date_range函数高效地创建一个时间数列,该函数的主要参数如右。点击输入标题3.1pandas的数据结构针对参数freq进行输入时,也可以选择不输入参数periods。通过两个具体的示例讲解如何运用date_range函数创建时间数列。点击输入标题3.2数据框的可视化通常而言,金融时间序列的数据量会比较大,因此用户首先可以选择以可视化的方式了解数据的大致情况。pandas的plot函数可以实现数据框的可视化功能。3.2.1中文字体的显示在国内的金融领域,数据框的索引、列名通常会运用中文字体,并且在可视化的图形中需要以中文字体显示。对此,通过输入以下代码让Python调出中文模块:需要注意每次重新启动Python(本内容是重新启动Spyder)后,都需要将上面的3行代码重新输入,否则无法在可视化的图形中显示中文字体。3.2数据框的可视化数据框的可视化主要运用函数plot,以下是该函数需要输入的常用参数。3.2.2数据框可视化的函数与参数3.2数据框的可视化在显示出图形的弹出窗口左上方,单击

图标并在新弹出窗口中单击Tightlayout(紧凑型布局)可以自动实现图形的更优化布局;依然在显示出图形的弹出窗口左上方,单击

图标可以将图形保存至指定的文件夹,便于后续的使用。第1步:单击Spyder界面最上方菜单栏中的Tools(工具),并进入Preferences(偏好设置)界面。第2步:选择左边栏的IPythonconsole(IPython控制台),单击右上方的Graphics(绘图)。第3步:在中间位置的Graphicsbackend(后台)选择下拉列表中的Automatic(自动)。第4步:重启Spyder就可以实现刚才设置的功能了。针对第2步和第3步的设置,如图3-4所示。3.3数据框内部的操作3.3.1查看数据框的基本性质可视化是让用户对数据框存放的数据有比较形象的了解,但这仅仅迈出了分析的第一步,接下来就要对数据框的基本性质做进一步的掌握。下面就介绍除了例3-4中已经演示的head、tail函数之外的其他常用函数,使用这些函数可以从不同视角观察数据框。1.index函数与columns函数2.shape函数与describe函数此外,需要注意的是,以上输出的结果也是一个数据框,其中的行索引名是相关统计指标,列名则与数据框SH_Index的列名一致。3.3数据框内部的操作3.3.2数据框的索引与截取1.索引2.一般性截取3.3数据框内部的操作3.条件性截取有些时候,用户希望设定某些条件来截取相关的数据,比如针对某个列名找出大于或小于某个数值的数据。3.3.3数据框的排序1.按行索引的大小排序如果用户希望按照行索引的大小排序,比如最常见的就是针对金融时间序列按照时间由近到远(由大到小)或由远到近(由小到大)进行排序,就需要运用sort_index函数。该函数需要输入一个重要参数ascending,若ascending=True(默认情况)则表示由小到大排序,若ascending=False则表示由大到小排序。3.3数据框内部的操作2.按列名对应的数值大小排序用户也可以针对数据框,按照某个列名对应的数值大小进行排序,这时需要运用sort_values函数,并且重点运用参数by='列名'以及ascending=True(默认情况,由小到大排序)或者ascending=False(由大到小排序)。3.3.4数据框的更改1.修改行索引与列名3.3数据框内部的操作2.缺失值的查找不同的资本市场由于公众节假日安排的差异而导致市场有不同的休市日,上市公司的股票往往因为某些特殊的原因(比如重大资产重组等)而出现停牌,因此在金融时间序列中可能存在缺失值。在pandas中,可以运用isnull函数或者isna函数查找数据框中每一列是否存在缺失值,并且分为两步:第一步是查找每一列是否存在缺失值,如有则进入第二步精准找出缺失值所在行。通过一个示例讨论如何查找缺失值。3.缺失值的处理对于数据框存在的缺失值,可以采用以下4种方法进行处理。(1)直接删除法,也就是运用dropna函数直接将存在缺失值的整行数据进行删除。(2)零值补齐法,就是将缺失值赋值为0,可以运用fillna函数并输入参数value=0。(3)前值补齐法,同样运用fillna函数但输入参数method='ffill',表示用缺失值所在列的前一个非缺失值进行补齐,即向前填充(frontfill)。(4)后值补齐法,同样运用fillna函数但输入参数method='bfill',表示用缺失值所在列的后一个非缺失值进行补齐,即向后填充(backfill)。3.3数据框内部的操作可以看到,在采用前值补齐法以后,原先的缺失值就等于所在列的前一个非缺失值。比如上证综指4月6日的收盘价(缺失值)等于前一个交易日(4月3日)的收盘价,其他股指的缺失值也按照这样的逻辑进行补齐。在金融领域中,前值补齐法的运用最常见。可以看到,在采用后值补齐法以后,原先的缺失值就等于所在列的后一个非缺失值。比如道琼斯指数4月10日的收盘价(缺失值)等于后一个交易日(4月13日)的收盘价,其他股指的缺失值补齐也以此类推。3.4数据框之间的合并3.4.1创建两个新数据框对金融数据开展分析的时候往往会同时需要若干个数据框。为了便于分析,可以将不同的数据框进行合并(也称为拼接)。合并分为两类:一类是上下结构,即按行合并;另一类是左右结构,即按列合并。在pandas中,关于数据框的合并涉及3个函数,分别是concat、merge和join。其中,concat函数可以运用于按行、按列合并,merge函数和join函数则主要运用于按列合并。3.4数据框之间的合并3.4.2concat函数的运用concat函数的具体用法如果输入axis=0则表示数据框是按行合并的,如果输入axis=1则表示数据框是按列合并的。1.按行合并2.按列合并3.4数据框之间的合并3.4.3merge函数的运用用户也可以运用merge函数对不同数据框按列进行合并。注意,在使用merge函数时,需要明确放置在左侧(left)与右侧(right)的数据框。3.4.4join函数的运用3.5数据框的主要统计函数3.5.1静态统计函数表3-7以例3-22中创建的数据框SH_Index_new1作为对象演示pandas的常用静态统计函数。同时,表中的函数都是通过“数据框.函数名(参数设置)”格式进行调用的。一般的参数是输入axis=0或axis=1,输入axis=0表示按行实现函数(默认值),输入axis=1则表示按列实现函数。3.5数据框的主要统计函数3.5数据框的主要统计函数3.5.2移动窗口与动态统计函数时点的数据往往波动较大,因此某一时点的数据通常不能很好表现数据本身的特性,于是需要采用某一时间区间的数据进行描述。因此,引出一个新的概念—移动窗口(rollingwindow),也称为滑动窗口或者滚动窗口。简而言之,为了提升数据的可靠性,将某个点的取值扩大到包含这个点的区间取值,并且用区间进行判断,这个区间就是窗口(window)。在pandas中,有一个动态统计函数rolling,它可以方便地计算带有移动窗口的数据框统计量,具体的函数形式以及主要的参数如下:结合示例,主要介绍金融时间序列中很重要的3个移动统计量,分别是移动平均、移动波动率(移动标准差)、移动相关系数。1.移动平均3.5数据框的主要统计函数2.移动波动率3.移动相关系数3.6本章小结&拓展阅读金融时间序列在金融分析与风险管理中占据十分重要的地位,pandas就是为金融时间序列量身定制的。本章首先介绍了pandas的序列和数据框这两大数据结构,重点讲解了如何从外部导入数据并创建数据框以及高效创建时间数列的方法。随后,讨论了如何将数据框可视化,主要聚焦于可视化常用的plot函数;同时国内的金融数据在可视化过程中会涉及中文字体的显示问题,对此也给出了相应的解决方案。接着,探讨了数据框的基本性质、索引、截取、排序、更改以及缺失值的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论