Series
Series是一种类似于一维数组的对象,是由一维数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。
1 In [1]: from pandas import Series 2 3 In [2]: import pandas as pd 4 5 In [3]: ser = Series([1,2,3,-1,-2]) 6 7 In [4]: ser 8 Out[4]: 9 0 1 10 1 2 11 2 3 12 3 -1 13 4 -2 14 dtype: int64
Series的字符串表现形式为:索引在左边,值在右边。由于没有为数据指定索引,会自动创建一个0到N-1(N为数据的长度)的整数型索引。可以通过Series的values和index属性获取其数组表示形式和索引对象。
1 In [8]: ser.values 2 Out[8]: array([ 1, 2, 3, -1, -2]) 3 4 In [9]: ser.index 5 Out[9]: RangeIndex(start=0, stop=5, step=1)
也可以创建对各个数据点进行标记的索引。
1 In [10]: ser1 = Series([2,3,-4,-5],index = ['a','b','c','d']) 2 3 In [11]: ser1 4 Out[11]: 5 a 2 6 b 3 7 c -4 8 d -5 9 dtype: int64 10 11 In [12]: ser1.index 12 Out[12]: Index([u'a', u'b', u'c', u'd'], dtype='object')
与普通的Numpy数组相比,可以通过索引的方式选取Series中的单个或一组值。
In [13]: ser1['a'] Out[13]: 2 In [14]: ser1['b'] = 5 In [15]: ser1 Out[15]: a 2 b 5 c -4 d -5 dtype: int64
进行算数运算都会保留索引和值之间的连接。
1 In [19]: ser1 2 Out[19]: 3 a 2 4 b 5 5 c -4 6 d -5 7 dtype: int64 8 9 In [20]: ser1 * 2 10 Out[20]: 11 a 4 12 b 10 13 c -8 14 d -10 15 dtype: int64 16 17 In [21]: ser1[ser1 > 0] 18 Out[21]: 19 a 2 20 b 5 21 dtype: int64
还可以将Series看成是一个定长的有序字典,因为它是索引值到数据值的一个映射。
1 In [22]: 'a' in ser1 2 Out[22]: True 3 4 In [23]: 'e' in ser1 5 Out[23]: False
如果数据被存放在一个Python字典中,可以直接通过这个字典来创建Series。
1 In [32]: data = {'Tom':100,'Alia':98,'Abel':80} 2 3 In [33]: datas = Series(data) 4 5 In [34]: datas 6 Out[34]: 7 Abel 80 8 Alia 98 9 Tom 100 10 dtype: int64
如果只传入一个字典,则结果Series中的索引就是源字典的键。
1 In [35]: states = ['Call','Tom','Alia','Abel'] 2 3 In [36]: sim = Series(datas,index=states) 4 5 In [37]: sim 6 Out[37]: 7 Call NaN 8 Tom 100.0 9 Alia 98.0 10 Abel 80.0 11 dtype: float64
在pandas中,NaN表示缺失值,pandas的isnull和notnull函数用于检测缺失数据。
1 In [38]: pd.isnull(sim) 2 Out[38]: 3 Call True 4 Tom False 5 Alia False 6 Abel False 7 dtype: bool 8 9 In [39]: pd.notnull(sim) 10 Out[39]: 11 Call False 12 Tom True 13 Alia True 14 Abel True 15 dtype: bool
Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切。
1 In [42]: sim.name = 'student' 2 3 In [43]: sim.index.name = 'class' 4 5 In [44]: sim 6 Out[44]: 7 class 8 Call NaN 9 Tom 100.0 10 Alia 98.0 11 Abel 80.0 12 Name: student, dtype: float64