pandas_map、apply、apply_map

  • 是否大量使用自定义函数是区分编程小白和老手的重要指标。
  • 虽然处理数据时,使用自定义函数能够大大缩减时间,并且达到一些别的方法没法完成的效果。
  • 在熟练的数据分析员的代码里,大部分的篇幅都是在定义函数,而最后的应用只占很小的篇幅。
  • apply()是对DataFrame里的每行或列进行函数应用。applymap()是对DataFrame里的每个元素进行函数应用。map()是对Series里(就是单独一列)的每个元素进行函数应用。

假设还是之前的df:

pandas_map、apply、apply_map_第1张图片

‘销售'和'人员数量'两列的数值小数位数太多了,我只想保留两位小数。
pandas_map、apply、apply_map_第2张图片

前三列不是数值,不能应用保留两位小数的函数,所以只能后面两列进行运用。
如果只对一列进行处理应该用map(),如果用其它的就会报错。
pandas_map、apply、apply_map_第3张图片

那处理过后的列怎么放回原数据呢?再重新对这一列赋值就行了。
pandas_map、apply、apply_map_第4张图片

lambda在这里其实是在定义一个简单的函数,一个没有函数名的函数。
再简单运用一个函数:用588除以‘人员数量’这一列里的每一个数字??并且保留两位小数。
pandas_map、apply、apply_map_第5张图片

lambda的好处就是简单、好写、好理解。坏处就是不能重复利用,像上面这个用法,明明刚才已经定义过保留两位小数的函数,在重复使用时还是要重新再定义。这就将自定义函数的一大优点成功避开了。
用def完整定义函数就可以重复利用了。假设我们要在df的下面加一行‘总计’,如果直接用lambda和sum(),不是数值的列就会报错。先定义一个简单函数:

pandas_map、apply、apply_map_第6张图片

上面apply()对列应用函数,对行应用函数的时候,只需要添加参数axis=1就可以了。
注意:pandas自带的函数不要用apply(),map()等等,直接一个点'.'就可以了。
自定义函数具有高度的灵活性,和强大的功能,可以广泛使用。
参考网址: https://www.zhihu.com/people/cao-ji-19-71/posts?page=2

你可能感兴趣的:(pandas_map、apply、apply_map)