操作元素的函数
pandas库以NumPy为基础,并对它的很多功能进行了扩展,以用来操作新数据结构Series和DataFrame。通用函数就是经过扩展得到的功能,这类函数能够对数据结构中的元素进行操作,因此特别有效。
Pandas库中的函数应用和映射,例如,使用NumPy的np.sqrt( )函数就能计算DataFrame对戏那个每个元素的平方根。
按行或列执行操作的函数
除了通用函数,用户还可以自己定义函数。需要注意的是这些函数对一维数组进行运算,返回结果为一个数值。例如,我们可以定义一个计算数组元素取值范围的lambda函数。
还可以用下面这种形式定义函数,其实关于函数定义方面的知识,我们在前面都有过系统的讲解,使用def关键字就可以进行函数的定义啦,这边我们再来回顾一下:
用apply( )函数可以在DataFrame对象上调用刚定义的函数。
然而,每一列的运算结果为一个数值。如果你想用函数处理行而不是列,需将axis选项设置为1.
apply( )函数并不是一定要返回一个标量,它还可以返回Series对象,因而可以借助它同时执行多个函数。每调用一次函数,就会有两个或两个以上的返回结果。我们可以像下面这样指定一个函数。
像之前一样,应用这个函数,但是返回结果不再是Series而是DataFrame对象,并且DataFrame对象的行数和函数返回值的数量相等。
统计数据
数组的大多数统计函数对DataFrame对象依旧有效,因此没有必要使用apply( )函数。例如,sum( )和mean( )函数分别用来计算DataFrame对象元素之和及它们的均值。
describe( )函数能够计算多个统计量。
排序和排位次
另外一种使用索引机制的基础操作是排序(sorting)。对数据进行排序通常为必要操作,因此简化它的实现非常重要。pandas的sort_index( )函数返回一个跟原对象元素相同但顺序不同的新对象。
首先看一下Series对象各项的排序方法。要排序的索引只有一列,因此操作很简单。
输出结果中,各元素按照以字母表顺序升序排列(A--Z)的标签进行排序。这是默认的排序方法,但若指定ascending选项,将其值置为False,则可按照降序排列。
对于DataFrame对象,可分别对两条轴中的任意一条进行排序。如果要根据索引对行进行排序,可依旧使用sort_index( )函数,不用指定参数,前面已经说过;如果要按列进行排序,则需要指定axis选项,其值为1.
至此,我们已经讲解了根据索引进行排序的方法。但你往往还需要对数据结构中的元素进行排序,对于这个问题,Series和DataFrame对象有所不同,要区别对待。
领取专属 10元无门槛券
私享最新 技术干货