接上文,pandas也是一个常用的Python科学计算库,提供了许多功能强大的数据结构,本篇文章会介绍最为常用的Series
与DataFrame
两种数据结构,pandas底层依赖于NumPy,因此也继承了NumPy的优势,提供了许多便利的统计学、数学函数。 将pandas结合matplotlib,可以方便地存储、计算并可视化你的数据,简单的几行代码就可以绘制出一目了然的图表。
这篇文章主要来介绍下Series,pandas中Series是一个可以存储任何数据类型的一维数组,通常用来处理时间序列数据
创建序列
使用pd.Series()
函数,传入Python的list或NumPy的ndarray即可生成一个序列
序列有几个常用属性:
- name属性,序列的名称
- index属性,序列的索引
可以在调用初始化函数的时候作为参数传入,也可以之后添加,默认情况下为0~N-1的数字,索引还可以是日期类型,可使用pd.date_range()
产生。
获取序列中元素
获取序列中元素pandas提供了两个函数
- iloc
iloc[]
可以通过整数下标获取元素,同样,切片(slicing)功能也必不可少
- loc
loc[]
通过索引获取元素
过滤序列
如果需要根据条件过滤序列元素,可使用布尔数组进行过滤,序列支持标准比较符,比较后就会得到一个布尔序列。
将这个布尔序列传入原序列的loc函数,就可以完成序列的条件过滤
应用示例
Quantopian提供的get_pricing()
函数,返回的就是一个序列,其索引为datetime类型
默认的采样频率为天,可使用
resample()
函数对原始数据集进行重新采样,还可以自定义采样方法get_pricing返回数据中只包含交易日,如果希望将节假日也加入其中,需要你手工生成并制定日期索引,有了索引之后,你又会面临另一个问题,节假日的股价如何填充,quantopian有两种模式
- ffill 向前填充,以前一个非空值填充
-
bfill 向后填充,以后一个非空值填充
可以看到上图中最开始存在两个空值,这是因为前两天都恰巧为非交易日,所以就向前填充的策略就无法生效
对于这种空值数据,我们既可以使用fillna()
方法进行填充,也可以使用dropna()
方法丢弃此部分数据
内置的统计方法可以方便的看到各统计指标
diff()
函数可以自动将序列转换为一个每日价格变动序列,pct_change()
函数则生成一个每日价格变动比例的序列,我们这里讲每日价格变动比率绘制出来rolling_mean()
与rolling_std()
函数可以提供移动平均值与移动标准差,这里绘制一个30天的移动平均线:
这篇就先介绍到这,下篇我们来介绍pandas中的另外一员干将——DataFrame。
谢谢大家,欢迎订阅!