数据清洗与准备——数据转换
一、删除重复值
由于各种原因,DataFrame 中会出现重复行。请看如下例子:
DataFrame 的 duplicated 方法返回的是一个布尔值 Series,这个 Series 反映的是每一行是否存在重复(与之前出现过的行相同)情况:
drop_duplicates 返回的是 DataFrame,内容是 duplicated 返回数组中为 False 的部分:
这些方法默认都是对列进行操作。我们可以指定数据的任何子集来检测是否有重复。假设我们有一个额外的列,并想基于 "k1" 列去除重复值:
duplicated 和 drop_duplicates 默认都是保留第一个观测到的值。传入参数 keep="last" 将会返回最后一个:
二、使用函数或映射进行数据转换
对于许多数据集,我们可能希望基于 DataFrame 中的数组、列或列中的数值进行一些转换。考虑下面这些收集到的关于肉类的假设数据:
假设我们想要添加一列用于表明每种食物的动物肉类型。让我们先写下一个食物和肉类的映射:
Series 的 map 方法接收一个函数或一个包含映射关系的字典型对象,但是这里我们有一个小的问题在于一些肉类大写了,而另一部分肉类没有。因此,我们需要使用 Series 的 str.lower 方法将每个值都转换为小写: