pandas中apply与map的异同

共 2115字,需浏览 5分钟

 ·

2020-09-01 05:58


◆ ◆ ◆  ◆ 



前言


pandas作为数据处理与分析的利器,它的江湖地位非同小可。在我们数据处理与分析过程中,有时候需要对某一列的每一个值都进行处理,这时候推荐大家使用apply或者map。


但是,二者又有啥区别呢?一起来通过几个小例子学习一下吧。


APPLY


一、直接使用内置函数或者numpy函数

# 数据展示>>> dfOut[1]:    姓名  年龄0   alan  191  black  152   cici  233  david  224   eric  18
# 计算字符长度>>> df['姓名'].apply(len)Out[2]: 0 41 52 43 54 4Name: 姓名, dtype: int64
# 计算平方>>> df['年龄'].apply(np.square)Out[3]: 0 3611 2252 5293 4844 324Name: 年龄, dtype: int64

二、使用lambda匿名函数

# 根据年龄打标签:是否成年>>> df['年龄'].apply(lambda x: '已成年' if x>=18 else '未成年')Out[4]: 0    已成年1    未成年2    已成年3    已成年4    已成年Name: 年龄, dtype: object
# 修改姓名为首字母大写>>> df['姓名'].apply(lambda x: x.title())Out[5]: 0 Alan1 Black2 Cici3 David4 EricName: 姓名, dtype: object


三、使用def自定义函数
# 自定义函数def fn(x):    if x >=18:        return '成年人'    else:        return '未成年'
# 自定义函数作为apply参数      >>> df['年龄'].apply(fn)Out[6]: 0 成年人1 未成年2 成年人3 成年人4 成年人Name: 年龄, dtype: object

需要注意的是,apply不仅可以用于Series,还可用于DataFrame,具体可以根据自己的业务需要,及数据处理规范来使用即可。


MAP


一、直接使用内置函数或者numpy函数
# 计算字符长度>>> df['姓名'].map(len)Out[7]: 0    41    52    43    54    4Name: 姓名, dtype: int64
# 计算平方>>> df['年龄'].map(np.square)Out[8]: 0 3611 2252 5293 4844 324Name: 年龄, dtype: int64


二、使用lambda匿名函数
# 根据年龄打标签:是否成年>>> df['年龄'].map(lambda x: '已成年' if x>=18 else '未成年')Out[9]: 0    已成年1    未成年2    已成年3    已成年4    已成年Name: 年龄, dtype: object
# 修改姓名为首字母大写>>> df['姓名'].map(lambda x: x.title())Out[10]: 0 Alan1 Black2 Cici3 David4 EricName: 姓名, dtype: object

三、使用def自定义函数

# 自定义函数作为map参数      >>> df['年龄'].map(fn)Out[11]: 0    成年人1    未成年2    成年人3    成年人4    成年人Name: 年龄, dtype: object


四、使用dict作为map参数

# apply没有这种功能!>>> df['姓名'].map({'alan':'女','black':'男','cici':'女','david':'男','eric':'男'})Out[12]: 01234Name: 姓名, dtype: object



通过上面的小例子讲解,我们可以得出以下结论:
(1)map、apply在用于Series时,对每一个值进行处理,两者并没有什么区别。(是否受数据量影响可以自行验证)
(2)apply不仅可以用于Series,还可以用于DataFrame;而map只能用于Series。
(3)一般情况下,apply应用更广泛,尤其是自定义函数带多个参数时,建议使用apply。



记得点在看~祝大家一夜暴富,基金、股票一片红~



在看”的永远18岁~
浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报