Pandas是python的第三方库,Pandas是建立在Numpy的基础上,其最大特色在于提供灵活的数据结构来处理关联数据和有标签的数据。
Pandas提供了两大类型的数据结构:一维结构Series类型数据和二维结构的DataFrame数据。这两大数据结构都有数据标签这一独特性。数据标签能够将不同的数据按照相同的数据标签进行汇总。Pandas广泛应用于金融,统计以及社会科学领域的数据处理。本文总结了Series的基本功能。
Series数据类型
Series类型的数据由一列数据及其对应的标签组成。Series对象本质上是一个Numpy数组,每个Series对象实际上都有两个数组组成,具有index和value两大属性。
- Index:保存标签信息,是从Numpy数组继承的Index对象;
- Values:保存值,是一维Numpy数组。
创建
空Series:pandas.Series();
同时制定数组和索引:pandas.Series([1,2,3,4], index = ['a', 'b', 'c', 'd'])
KV模式初始化:pandas.Series({'a':1, 'b':2, 'c':3}
只指定value:pandas.Series([1,3,5,4]}
通过randn生成数组:pandas.Series(numpy.random.randn(5))
通过arange生成数组:pandas.Series(numpy.arange(0,6))
提取与切片
series = pandas.Series(numpy.arrange(0, 6), index = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’])
取前n个:series.head(5)
取后n个:series.tail(5)
取指定下标:series.take([3, 5, 7])
通过offset取:series[2], series[[1,3 ,5]]
通过标签取:series['a'], series['a', 'b', 'c']
范围切片:series[0:4]
标签范围切片:series['a':'d']
时间序列
创建时需要把index设置为Timestamp,如:
from datetime import datetime
import pandas as pd
date = datetime(2016, 1, 1)
date = pd.Timestamp(date)
ts = pd.Series([1], date)
dates = ['2015-01-01', '2016-01-01', '2016-03-01']
ts = pd.Series([1, 2], index = pd.to_datetime(dates))
多种时间格式支持:ts['20150101'], ts['2016-10-01'], ts['01/01/2016']
年份切片:ts['2016']
滞后操作:ts.shift(1), 正数表示滞后; ts.shift(-1),负数表示超前
收益率计算:(price.shift - price.shift(1))/ price.shift(1)
高低频时间数据转换:rts = ts.resample('M', how = 'first') #'M'指的是每月最后一天,how指定了转换方法可以是first,mean等
rts = ts.resample('MS', how = 'first') #'MS'只每月第一天。