一、排序和排名
排序:sort_index和sort_values函数
代码示例:
print 'Series排序' x = Series(range(4), index = ['b', 'a', 'c', 'd']) print x.sort_index() # Series按索引排序 ''' a 1 b 0 c 2 d 3 ''' print x.sort_values() # Series按值排序 ''' b 0 a 1 c 2 d 3 ''' print 'DataFrame按索引排序' frame = DataFrame(numpy.arange(8).reshape((2, 4)), index = ['b', 'a'], columns = list('ABDC')) print frame ''' A B D C b 0 1 2 3 a 4 5 6 7 ''' print frame.sort_index() # 根据行索引来排序 ''' A B D C a 4 5 6 7 b 0 1 2 3 ''' print frame.sort_index(axis = 1) #根据列索引来排序 ''' A B C D b 0 1 3 2 a 4 5 7 6 ''' print frame.sort_index(axis = 1, ascending = False) # 设置降序排序 ''' D C B A b 2 3 1 0 a 6 7 5 4 ''' print 'DataFrame按列的值排序' frame = DataFrame({'b':[4, 7, -3, 2], 'a':[0, 1, 0, 1]}) print frame ''' a b 0 0 4 1 1 7 2 0 -3 3 1 2 ''' print frame.sort_values(by = 'b') # 指定b这列的值进行排序 ''' a b 2 0 -3 3 1 2 0 0 4 1 1 7 ''' print frame.sort_values(by = ['a', 'b']) #先a后b进行列的值排序 ''' a b 2 0 -3 0 0 4 3 1 2 1 1 7 '''
排名:根据值的大小/出现次数来进行排名,得到一组排名值:rank函数
print 'rank:默认升序,排名值从1开始' obj = Series([4, 2, 0, 4],index = ['a','b','c','d']) # 以值从小到大来赋排名值:c:0(1) b:2(2) a:4(3) d:4(4) print obj.rank() ''' a 3.5 求平均值(4+3)/2 b 2.0 c 1.0 d 3.5 ''' print obj.rank(method = 'first') # 按出现顺序排名,不求平均值。 ''' a 3.0 b 2.0 c 1.0 d 4.0 ''' print obj.rank(ascending = False, method = 'max') # 逆序,并取排名值最大值。所以-5的rank是7 # a:4(1) d:4(2) b:2(3) c:0(4) ''' dtype: float64 a 2.0 b 3.0 c 4.0 d 2.0 ''' frame = DataFrame({'b':[4.3, 7, -3, 2], 'a':[0, 1, 0, 1], 'c':[-2, 5, 8, -2.5]}) print frame ''' a b c 0 0 4.3 -2.0 1 1 7.0 5.0 2 0 -3.0 8.0 3 1 2.0 -2.5 ''' print frame.rank(axis = 1) # 按行进行排名,默认升序 ''' a b c 0 2.0 3.0 1.0 1 1.0 3.0 2.0 2 2.0 1.0 3.0 3 2.0 3.0 1.0 '''
二、索引重复的情况
代码示例:
print '重复索引:进行两次索引'
obj = Series([0,1,2,3,4], index = ['a', 'a', 'b', 'b', 'c'])
print obj.index.is_unique # 判断是非有重复索引
# False
print obj['a'][0]
# 0
print obj.a[1]
# 1
df = DataFrame(numpy.arange(12).reshape(4, 3), index = ['a', 'a', 'b', 'b'])
print df
'''
0 1 2
a 0 1 2
a 3 4 5
b 6 7 8
b 9 10 11
'''
print df.ix['b'].ix[0] // 两次行索引
'''
0 6
1 7
2 8
Name: b, dtype: int32
'''
print df.ix['b'].ix[1]
'''
0 9
1 10
2 11
Name: b, dtype: int32
'''
三、汇总和计算描述统计
常用方法选项: