http://liao.cpython.org/pandas03/
http://liao.cpython.org/pandas06/
总结一下:创建Series的实例对象,有两种方式:一种是不指定Series构造函数的index,会自动有一个位置信息的index从0~len() -1自动为这个Series对象分配。另一种方式是常用字符列表作为Series对象的各个数据的标签label。
在创建Series对象时,建议不用int64作为label,用字符串作为Series的label在后续pandas的使用比较常见且有必要。int64可以作为位置信息,但一般从0开始,非0开始的位置信息建议不要用。
idx = 'a b c d e'.split()
v = [11,12,3,4,16]
t = pd.Series(v,index = idx,name = 'im columns')
t.name
Out[76]: 'im columns'
t.index
Out[77]: Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
index的使用
在pandas里对Series的各个位置、标签上的数据的访问,可以通过loc、iloc、at、iat或ix来访问。带i的一般是通过位置相关得到数据,不带i的通过标签label来获得对应数据,ix既可以接收位置也可接收label。这里的loc、iloc等不是函数,可以理解为index的属性。
t.iloc[0]
Out[79]: 11
t.loc['a']
Out[80]: 11
多个index的使用 [[ ]]
t.loc[['a','b']]
t.loc[['a','b']]
Out[82]:
a 11
b 12
Name: im columns, dtype: int64
Series 的切片
Slice切片,pandas的Series的切片,以位置信息去使用切片,和python里的切片的意义是一样的即含起点不含终点half-open。但Series还支持一种label的方式定位每个元素,常用字符串做index,所以在label上使用切片和python不一样的地方是即含起点又含终点。如果用整形位置信息作为label,会产生歧义,建议不这样用。总之,整形做位置信息切片,字符串做label切片。有关切片的使用,之前的章节已经说过了,这里不重复了。
在Pandas里使用切片最标准的定义Series和使用是t变量这种创建Series的方式和使用index、slice的方式。即用字符串做label(显式),用整形做位置信息(隐式),但显式切片和隐式切片的结果不同,显示含终点,隐式不含终点。
t['b':'d']
Out[97]:
b 12
c 3
d 4
Name: im columns, dtype: int64
Series 读取数据,读取series对象的label和value
- 通过label或者位置的方式访问、修改Series数据。
1.1 当然也可用iloc、loc、at、iat等来处理。
t['a'] = 111
t
Out[106]:
a 111
b 12
c 3
d 4
e 16
Name: im columns, dtype: int64
- iteritems函数可以获得标签和值。
for x in t.iteritems():
print (x)
('a', 111)
('b', 12)
('c', 3)
('d', 4)
('e', 16)
Series增加数据 append
t = t.append(pd.Series({'z':22}))
t['x'] = 34
删除数据: 删除在Series很少用。常用布尔选择或mask来选择数据组成新的Series。(布尔选择:)
t1 = t>20
t1
Out[123]:
a True
b False
c False
d False
e False
z True
z True
p True
x True
dtype: bool