pandas基本功能(续2)

函数应用和映射

NumPy的ufuncc(元素级数组方法)也可用于操作pandas对象:

pandas基本功能(续2)

另一个常见的操作是,将函数应用到由各列或行所形成的一维数组上。DataFrame的apply方法即可实现此功能:

pandas基本功能(续2)

许多最为常见的数组统计功能都能被实现成DataFrame的方法(如sum和mean),因此无需使用apply方法。
除标量值外,传递给apply的函数换可以返回由多个值组成的Series:

pandas基本功能(续2)

此外,元素级的Python函数也是可以用的。下面是得到frame中各个浮点值得格式化字符串,使用applymap即可:

pandas基本功能(续2)

之所以叫做applymap,是因为Series有一个用于应用元素级函数的map方法:

pandas基本功能(续2)

排序和排名

根据条件对数据集排序(sorting)也是一种重要的内置运算。要对行或列索引进行排序(按字典顺序),可使用sort_index方法,它将返回一个已排序的新对象:

pandas基本功能(续2)

面对于DataFrame,则可以根据任意一个轴上的索引进行排序:

pandas基本功能(续2)

数据默认是按升序排序的,但也可以降序排序:

pandas基本功能(续2)

在DataFrame中,可以对一个多个列中的值进行排序。将一个或多个列的名字传递给by选项即可达到该目的:

pandas基本功能(续2)

要根据多个列进行排序,传入名称的列表即可:

pandas基本功能(续2)

排序(ranking)跟排序关系密切,且它会增设一个排名值(从1开始,一直到数组中有效数据的数量)。它跟numpy.argsort产生的间接排序索引差不多,只不过它可以根据某种规则破坏平级关系。接下来介绍Series和DataFrame的rank方法。默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系:

pandas基本功能(续2)

也可以根据值在原数据中出现的顺序给出排名:
obj.rank(method='first')
也可以进行降序进行排名:
obj.rank(ascending=False,method='max')

pandas基本功能(续2)

DataFrame可以在行或列上计算排名:

pandas基本功能(续2)

排名时用于破坏平级关系的method选项
method 说明
average 在相等分组中,为各个值分配平均排名
min 使用整个分组的最小排名
max 使用整个分组的最大排名
first 按值在原始数据中的出现顺序分配排名
带有重复值的轴索引

虽然许多pandas函数都要求标签统一,但这并不是强制性的。

pandas基本功能(续2)

索引的is_unique属性可以告诉你它的值是否唯一的:
obj.index.is_unique

对于带有重复值的索引,数据选取的行为将会有些不同。如果某个索引值对应多个值,则返回一个Series,而对应单个值的,则返回一个标量值。

pandas基本功能(续2)

对DataFrame的行进行索引时也是如此:

pandas基本功能(续2)