AI量化:Python基础

大数据、人工智能时代,python是最好的高级程序开发语言,没有之一。

生态的丰富性,对于数组,矩阵类型数据的友好性都让其它语言望尘莫及。

本章主要介绍一些基础结构,它不构成一个完成的入门教程,但针对至少有一门程序开发语言功底的工程师,转型做量化投资,是肯定够用了。

python数据类型与结构

与所有的高级程序开发语言类似,python也内置了自己的基础数据类型和数据结构。基础的数据包括int(整型),float(浮点型)以及string字符串。基础数据结构包括list(列表),tuple(元组),dict(字典)以及set(集合)。

上述三种数据类型和四种数据结构,已经可以满足大部分python程序开发的使用。这也是为什么python上手非常容易的原因。

本章重点介绍这七种数据类型的使用。

整数

整数是程序开发里的常用数据类型。

>>> a = 666

>>> type(a)

type函数是python内建函数,可以查看对象或类的类型信息,可以看到,我们给a赋值666,python解释器会将它识别为int类型。这里需要注意的是,python是解释型语言,不需要指明类型,解释器在运行时会自行判定;另外,python里所有的类型都是class,它是完全面向对象的语言。

浮点型

程序开发里,我们使用浮点数float类型来表现小数,比如1.25,或者888.0。

>>> a = 888.0

>>> type(a)

在python3里,整数相除,结果会自动变成浮点型。

>>> type(1 / 4)即使结果是整数

>>> type(6 / 2)

字符串

对于一个程序设计语言,要处理的目标,除了数字(整形、浮点型)之外,很重要的就是文本数据。文本数据在python是字符串(string)。

>>> str = 'python人工智能在量化投资里的应用。'

>>> str,type(str)('python人工智能在量化投资里的应用。', )

使用单引号或双引号表示均可,如无特别强调,本书字符串均使用单引号。同时大家可以看到,python3统一使用unicode编码表示python字符串,直接使用中文不会出现乱码,这也是为何强烈建议大家使用python3的原因。

字符串有内建的查找,连接,去除空格等强大的功能,结果内建的re包(正则表达式),可以实现强大的文本处理功能。但是在金融的应用里,我们主要是对金融时间序列进行操作,这里就不对文本处理展开介绍。

列表

Python内建的三种数据类型非常简单,它的四种数据结构,使用也非常容易。 列表(list)可以存放一组对象,对象类型可以一样,也可以不一样。列表在金融程序开发里,使用频率很高。

data = ['ai',8848,666.8,['a',1]] len(data) 4type(data)

使用内建的len函数,可以查看列表、元组等数据结构的长度。可以看出,data的长度是4,也就是列表包含4个元素,类型为list。 我们可以为使用append函数为list添加一个元素,这时候元素会添加到列表尾部。

>>> data.append('hello python量化')

>>> data['ai', 8848, 666.8, ['a', 1], 'hello python量化']

当然我们可以打元素插入到指定位置,使用insert函数,insert多 一个参数是下标,表明要插入到哪个位置,这里需要注意的是python的下标也是从0开始的。

['ai', 8848, 666.8, ['a', 1], 'hello python量化']

>>> data.insert(1,'在1的位置插入这个字符串')

>>> data['ai', '在1的位置插入这个字符串', 8848, 666.8, ['a', 1], 'hello python量化']

使用remove函数,我们可以删除指定的列表元素。

['ai', '在1的位置插入这个字符串', 8848, 666.8, ['a', 1], 'hello python量化']

>>> data.remove(8848)>>> data['ai', '在1的位置插入这个字符串', 666.8, ['a', 1], 'hello python量化']

细心的读者可能会问,如果要删除的元素不存在呢?这时候程序会抛异常,所以删除元素之前,需要确保元素存在。使用下标删除则是更好的方式,就是列表的pop函数。

['ai', '在1的位置插入这个字符串', 666.8, ['a', 1], 'hello python量化']

>>> data.pop(1)'在1的位置插入这个字符串'>>> data['ai', 666.8, ['a', 1], 'hello python量化']

使用pop函数成功把下标为1的元素删除了。

使用切片操作,可以直接修改列表指定位置的元素。

>>> data[['a', 1], 'hello python量化']

>>> data[1] = 'hello python'>>> data[['a', 1], 'hello python']

同样,使用切片,可以轻松访问指定位置的元素。

>>> data[['a', 1], 'hello python']

>>> data[0]['a', 1]

字典

字典是一种key,value的窗口模型,可以存储任意类型的数据。

>>> dict = {'key1':'value1',1:123,2:'888'}

>>> dict{'key1': 'value1', 1: 123, 2: '888'}

增加/修改元素:

>>> dict['key2']=2

>>> dict{'key1': 'value1', 1: 123, 2: '888', 'key2': 2}

如果key已经存在,则会覆盖原值。

>>> dict['key2']=3

>>> dict{'key1': 'value1', 1: 123, 2: '888', 'key2': 3}

删除元素 使用系统内置的del函数,删除指定key。

>>> del dict['key1']

>>> dict

访问元素: 直接使用key访问元素。

>>> dict['key2']3

循环遍历数据,字典提供两个函数,一个是.keys()返回key的列表,另一个是.items(),返回的是value的列表:

>>>forkeyindict.keys(): print(key,dict[key]) 1 1232 888key2 3

集合

python的集合set,set与列表类似的地方在于,它也是一堆元素的合集,元素的类型可以是任意。与列表的区别在于,元素不可重复,就相当于是列表的排重,同时set里的元素是无序的。

>>> list = ['a','b','c','d','a',1,1]

>>> list['a', 'b', 'c', 'd', 'a', 1, 1]

>>> set(list){'c', 1, 'b', 'd', 'a'}

正因为set元素是无序的,所以set不可以通过下标切片方式访问元素。可以通过in来判断元素是否在集合中,如果元素存在,则返回True,否则返回False。

>>> 'a'insetTrue

>>> 'z'insetFalse

元组

Python的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

>>> tup1 = ('hello','world',1,2,1,3)

>>> tup1('hello', 'world', 1, 2, 1, 3)

>>> tup1[-1]3

关于作者:魏佳斌,互联网产品/技术总监,北京大学光华管理学院(MBA),特许金融分析师(CFA),资深产品经理/码农。偏爱python,深度关注互联网趋势,人工智能,AI金融量化。致力于使用最前沿的认知技术去理解这个复杂的世界。AI量化开源项目:

https://github.com/ailabx/ailabx

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180622G0ZRGC00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券