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

 

posted @ 2017-11-24 15:57  薛乔毓  阅读(1196)  评论(0编辑  收藏  举报