量化交易平台Quantopian讲座(3)—pandas之Series

接上文,pandas也是一个常用的Python科学计算库,提供了许多功能强大的数据结构,本篇文章会介绍最为常用的SeriesDataFrame两种数据结构,pandas底层依赖于NumPy,因此也继承了NumPy的优势,提供了许多便利的统计学、数学函数。 将pandas结合matplotlib,可以方便地存储、计算并可视化你的数据,简单的几行代码就可以绘制出一目了然的图表。

量化交易平台Quantopian讲座(3)—pandas之Series_第1张图片
示例代码
量化交易平台Quantopian讲座(3)—pandas之Series_第2张图片
随机损益波动图

这篇文章主要来介绍下Series,pandas中Series是一个可以存储任何数据类型的一维数组,通常用来处理时间序列数据

创建序列

使用pd.Series()函数,传入Python的list或NumPy的ndarray即可生成一个序列

量化交易平台Quantopian讲座(3)—pandas之Series_第3张图片
创建序列

序列有几个常用属性:

  • name属性,序列的名称
  • index属性,序列的索引
    可以在调用初始化函数的时候作为参数传入,也可以之后添加,默认情况下为0~N-1的数字,索引还可以是日期类型,可使用pd.date_range()产生。
    量化交易平台Quantopian讲座(3)—pandas之Series_第4张图片
    日期索引

获取序列中元素

获取序列中元素pandas提供了两个函数

  • iloc
    iloc[]可以通过整数下标获取元素,同样,切片(slicing)功能也必不可少
    量化交易平台Quantopian讲座(3)—pandas之Series_第5张图片
    iloc获取元素
  • loc
    loc[]通过索引获取元素
    量化交易平台Quantopian讲座(3)—pandas之Series_第6张图片
    loc获取元素

过滤序列

如果需要根据条件过滤序列元素,可使用布尔数组进行过滤,序列支持标准比较符,比较后就会得到一个布尔序列。


量化交易平台Quantopian讲座(3)—pandas之Series_第7张图片
支持标准比较符

将这个布尔序列传入原序列的loc函数,就可以完成序列的条件过滤


量化交易平台Quantopian讲座(3)—pandas之Series_第8张图片
用布尔数据过滤元素

应用示例

Quantopian提供的get_pricing()函数,返回的就是一个序列,其索引为datetime类型

量化交易平台Quantopian讲座(3)—pandas之Series_第9张图片
get_pricing函数

默认的采样频率为天,可使用 resample()函数对原始数据集进行重新采样,还可以自定义采样方法
量化交易平台Quantopian讲座(3)—pandas之Series_第10张图片
resample函数

get_pricing返回数据中只包含交易日,如果希望将节假日也加入其中,需要你手工生成并制定日期索引,有了索引之后,你又会面临另一个问题,节假日的股价如何填充,quantopian有两种模式

  • ffill 向前填充,以前一个非空值填充
  • bfill 向后填充,以后一个非空值填充


    量化交易平台Quantopian讲座(3)—pandas之Series_第11张图片
    重建索引

可以看到上图中最开始存在两个空值,这是因为前两天都恰巧为非交易日,所以就向前填充的策略就无法生效

对于这种空值数据,我们既可以使用fillna()方法进行填充,也可以使用dropna()方法丢弃此部分数据

量化交易平台Quantopian讲座(3)—pandas之Series_第12张图片
空值处理

内置的统计方法可以方便的看到各统计指标

量化交易平台Quantopian讲座(3)—pandas之Series_第13张图片
统计方法

diff()函数可以自动将序列转换为一个每日价格变动序列, pct_change()函数则生成一个每日价格变动比例的序列,我们这里讲每日价格变动比率绘制出来
量化交易平台Quantopian讲座(3)—pandas之Series_第14张图片
示例代码

量化交易平台Quantopian讲座(3)—pandas之Series_第15张图片
每日价格变化比率图

rolling_mean()rolling_std()函数可以提供移动平均值与移动标准差,这里绘制一个30天的移动平均线:

量化交易平台Quantopian讲座(3)—pandas之Series_第16张图片
示例代码

量化交易平台Quantopian讲座(3)—pandas之Series_第17张图片
30天移动平均线

这篇就先介绍到这,下篇我们来介绍pandas中的另外一员干将——DataFrame。

谢谢大家,欢迎订阅!

你可能感兴趣的:(量化交易平台Quantopian讲座(3)—pandas之Series)