delphi报列表索引越界怎么处理_量化投资必备技能二:Pandas数据处理

1a305e1a00cbff8a07b9a54773be6147.gif

cfd5b61006a1545b7353cee9e38b4700.png

本文目标对象

零基础编程小白

读完本文你将收获

 开始用pandas解决学习工作中的具体问题

什么是Pandas

df02a1e49d90cc779a0a2c671c69f1a3.png

你是否还记得Numpy的数学、聚合、累计、逻辑、规整的运算?我们在之前Numpy数据处理已学习如何运用Numpy科学计算库,提高计算效率。

Pandas很多运算都是基于Numpy,与此同时还提供了更多的统计分析功能,你在金融数据分析的路上更进一步了嘛?

Pandas是基于Numpy模块和Matplotlib库(本质是对两者的部分功能进行了封装),能够借力计算方面的优势和简便地画图,是专门用于数据挖掘的开源python库。

或许你在想Pandas对于处理金融数据有什么特别之处?

对了,Pandas最早是由著名的量化资产管理公司AQR Capital Management开发的,所以Pandas里面封装的数据结构以及统计计算方法,对于处理时间序列数据(也就是我们在金融交易中天天打交道的价格数据)以及量化分析都有非常强大的支持。

今天我们将要开讲Pandas探索篇啦!!!

Series和Pandas数据结构

Pandas库中主要的数据结构有Series(序列型)和DataFrame(类表格型),下面将主要简述这两个对象的主要函数方法:

(1)pd.Series函数创建Series。可以直接传入一个列表,index默认从0开始的编号。当传入参数为包含映射关系的对象,如字典,函数运行时将映射关系在前的(如字典键)作为Series的key,在后的作为值。

(2)pd.DataFrame函数创建DataFrame,可通过传入colums,index参数设置DataFrame的行index和列名。

(3)含有用于整合 C、C++、Fortran 代码的工具Series相比Ndarray多了index索引,DataFrame相比Ndarray多了index和columns索引,而Series和DataFrame对象的value本质是Ndarray

了解了基本数据结构,我们还需要指导怎么进行数据的操作,那就让我们导入Pandas模块操作起来吧!

Pandas数据操作

509cb35efde03c2354e71408c8f0da0d.png

创建和索引

1fa5cc0f51dce3dcf8d01eb8c73ce362.png

Series:

S = pd.Series([列表], index = [索引名称列表])。

Series以位置进行索引,如s[1]获取series对象第二个位置的value。

Series以index进行索引,如s[‘a’]获取index值为‘a’对应的value。

Series以bool值进行索引,如s[s > 2]获取value > 2的value。

Series切片类似列表的切片。

DataFrame:

pd.DataFrame(Ndarray, index = xx , columns= xx)。

pd.DataFrame({字典},index = xx)(注:key对应columns)。

DataFrame对象可以直接通过Columns索引获取数据,但无法通过Index获得数据。

标签索引:df.loc[[‘a’],[‘f’]]获取index = ‘a’, columns = ‘f’的值。

位置索引:df.iloc[1:3,0]获取第二到第三行,第一列的数据。

混合索引:df.ix[0:3, 'a': 'c'] 获取第一行到第三行,’a’到‘c’列的数据。

509cb35efde03c2354e71408c8f0da0d.png

排序和修改

1fa5cc0f51dce3dcf8d01eb8c73ce362.png

排序:

按index进行排序:df.sort_index(ascending=False)ascending升序排序是false是降序排序。

按value进行排序:df.sort_values(by='a', ascending=True)按 ‘a’列按升序进行排序。

排序修改操作:

增加列:df['period'] = range(21),在df新添一列columns = ‘period’的一列数组。

删除列:del(df['period'] )删除上条创建的列。

509cb35efde03c2354e71408c8f0da0d.png

函数运算

1fa5cc0f51dce3dcf8d01eb8c73ce362.png

按对应axis求和:df.sum(axis= 1),axis =1 为按行统计。

按对应axis求平均:df.mean()。

按对应axis累计求和df.cumsum()。

*绝大部分的Numpy的通用函数都可以适用。

如:np.sqrt(df)对df里面的全部数据求开根

509cb35efde03c2354e71408c8f0da0d.png

数据正规化

1fa5cc0f51dce3dcf8d01eb8c73ce362.png

生成group对象:group1=df.groupby('group1') ,也可以多组分类,如group12 =df.groupby(['group1', 'group2'])。

对group对象进行聚合操作:group1.sum()、group1.max()、group1.mean()、group1.describe()。

选择group对象中的数据:group1.get_group('A').head()获取‘A’类别。

数据Concat操作:pd.concat((df1,df2)) 默认是直接纵向拼接在后面,设置axis = 1横向拼接。

Join操作:df1.join(df2) 根据两张表格的索引去进行合并。

Merge操作:pd.merge(df1,df2, on = 'feature') 自动根据重复列进行merge,但索引会重置。

Pandas在量化金融中的应用

Pandas如此强大,那在具体的量化交易中该如何使用呢,我们从几个简单的例子开始给大家介绍:

DataFrame按照条件筛选数据可应用于条件选股:

如:df[(df.PE < 25)  | (df.PB < 2.5) ]表示选择选取PE小于25或者PB小于2.5的数据,(注:多个逻辑条件组合,每个条件需要括号,而且 & |,不能用and或者or)

可以将自定义的函数作用在DataFrame的apply函数中实现:

实现向量化运算(同时对一组数进行一定规则的变化与运算),相比Python自身的显示循环效率能够大大提升,如:df.apply(lambda x : x.min(), axis=1)表示对DataFrame对象的每一行(axis = 1表示对行进行聚合运算)取最小值。

学会通用函数和修改DataFrame的操作非常重要:

在未来分析股票数据时,整合数据时都很常用,df.cumsum()在计算策略的收益率曲线时非常有用。

数据规整化和层次化操作对于搭建数据库和相关系统很重要:

通过规整化和层次化操作,能够设计自己所需的数据类型,对于像金融时间序列数据和一些另类数据非常重要,在后续课程中将会有更多的应用举例。

有了Pandas库的基础,我们是不是可以开始开发自己的量化交易策略了,导入时间序列数据、设定买卖规则和逻辑、回测一下表现和效果,启动执行命令,接下来,你可以躺赚了。

当然,量化开发涉及的内容还是很多的,如果真的要完整搭建自己的量化交易系统,还有更多的知识需要学习,那就去我们一量学院继续学习吧。

一量学院

史上最全的量化交易策略课程

第一部分:经典量化策略

量化择时的策略设计方法

1. 均线模型策略

2. 随机指标模型

3. 技术指标背离策略

4. 通道突破策略

动量与反转

1. 惯性和均值回归思想

2. 动量策略

3. 反转策略

如何做基金套利

1. QDII-LOF基金套利

2. 分级基金套利

3. 基金跨境套利

4. 基金跨资产/品种套利

宏观择时与行业轮动

1. 宏观择时策略

2. 全球宏观对冲策略

3. 美林时钟周期

4. 宏观因子择时

5. 行业轮动策略

热门的多空Alpha与事件驱动策略

1. 多空Alpha策略

2. 对冲基金策略

3. 事件驱动策略

4. 多因子价值策略

第二部分:期货CTA量化交易策略

经典趋势策略

1. CTA趋势策略之菲阿里四价和Dual-Thrust

2. CTA趋势策略之ATR突破和R-Breaker

3. CTA趋势策略之中长线日间交易

4. CTA趋势策略之择时-修正TD模型

5. CTA趋势策略之海龟交易法则

经典套利策略

1. CTA统计套利

2. CTA期现套利策略

3. CTA跨期、跨市场、跨品种套利策略

第三部分:机器学习策略

1. 大数据与舆情分析策略

2. 机器学习策略设计

3. 隐马尔可夫模型和支持向量机

4. 深度学习策略设计

第四部分:高阶策略

1. 高频策略与算法交易

2. 期权与衍生品交易策略设计

3. 期权宽跨式套利策略

4. 期权期货平价套利

5. 资产配置与复合策略设计

6. 均值方差模型

7. Black-litterman模型

8. 风险平价策略

76f17aa5fe4cd04b0bd961093c592ea1.png

- END -

6a027c004df6f771ab42264bc132a3dd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值