登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
图像视觉
›
一文弄懂apply、map和applymap三种函数的区别 ...
返回列表
发新帖
查看:
866
|
回复:
2
一文弄懂apply、map和applymap三种函数的区别
[复制链接]
fantansticma
fantansticma
当前离线
积分
981
窥视卡
雷达卡
315
主题
352
帖子
981
积分
高级飞友
高级飞友, 积分 981, 距离下一级还需 19 积分
高级飞友, 积分 981, 距离下一级还需 19 积分
积分
981
飞币
627
注册时间
2017-8-2
发消息
发表于 2022-11-26 11:19:35
|
显示全部楼层
|
阅读模式
CDA数据分析师 出品
在日常处理数据的过程中,会经常遇到这样的情况,对一个DataFrame进行逐行、逐列或者逐元素的操作,很多小伙伴也知道需要用到apply、map或者applymap,但是具体什么情况下运用哪种方法或者说对这些方法了解不够,用起来晕晕乎乎始终没有很明白,希望这一篇文章能够帮助有需要的小伙伴弄懂他们之间的区别,并且在遇到问题的时候能够很清楚明白用哪个以及该怎样使用。闲话少叙,我们正式开始吧。
首先,来个总结
· apply:应用在DataFrame的行或列中,也可以应用到单独一个Series的每个元素中
· map:应用在单独一个Series的每个元素中
· applymap:应用在DataFrame的每个元素中
apply
先从apply开始,当然最权威的说明还是要看官方文档:
apply是沿DataFrame的轴应用功能,传递给函数的对象是Series对象,其索引为DataFrame的索引(axis = 0'')或DataFrame的列(axis = 1'')
当然最常用的还是DataFrame.apply(),下边我们通过例子来说明一下帮助理解.
首先有一个表:
apply应用到DataFrame中
如果我们求一下每一列或者每一列的极差,注意axis参数的设置,一般默认为0,即求每一列的极值
apply的参数可以直接接收现成的函数,也可以接收自定义函数,比如自定义的匿名函数:
通过对轴信息的设置,也可以求每一行的极差:
需要注意的是结果的索引,能够很明显的告诉大家现在求的是行极差还是列极差,如果是行极差,索引是行标签,如果是列极差,索引是列名。
另外,对整个DataFrame运用apply的时候,要保证所有的字段都是符合作为参数的函数要求才可以,比如在列子中求极值得保证所有字段都是数值型才行,如果整个DataFrame不能满足要求,可以把符合要求的字段切出来再应用apply。
如果有需要,也可以把求的结果添加到原表当中。
apply应用到Series中
如这个例子,将A列的所有元素转换数据类型,从整型转换成浮点型:
总结一下,apply运用到整个DataFrame中可以执行整列或者整行的运算,运用到Series中,执行的是对每个元素的运算。
这个运算,map也可以实现。
map
首先,还是看下官方文档是怎么说的:
· 根据输入对应关系映射Series的值。
· 用于将Series中的每个值替换为另一个值,该值可以从函数dict或Series派生。
官方指定,map是应用于Seriesd 的,参数可以是函数也可以字典。
首先,还是要有一个表:
现在需要将性别转换成0和1,女为0,男为1,这个时候千万不要写循环啊,map()可以轻松实现,先来试试函数的形式:
def gender(x): G = 1 if x == "男" else 0 return G
map的参数除了可以是参数,也可以是字典,这和apply对参数的要求不同:
applymap
最后来看一下applymap,还是先搬上官方文档:
· 将函数应用于元素的数据框。
· 此方法应用一个函数,该函数接受并返回一个标量到DataFrame的每个元素。
简单说,applymap是把函数应用到DataFrame中的每个元素上的,要和apply对整列或者整行进行的操作区分开啊,apply想要直接对每个元素进行操作,得单独提取出Series才可以实现,不能直接再整个DataFrame上执行。下边来看个例子。
还是开头的那个表:
现在要把每个元素的数据类型都转换成浮点型,applymap()就派上用场了:
最后再总结一下:
apply:
· 既可以用在DataFrame,也可以用到单独的Series中
· 运用到DataFrame时,是用到了整行或者整列上,不是逐一运用到每个元素上
· 运用到Series时,作用到每个元素上
· 第一个参数只接收python原生函数或者numpy中的函数
map
· 只能运用到Series的每个元素上
· 参数可以是函数也可以是字典,还可以是序列
applymap
· 只能应用在DataFrame中,并且是作用在DataFrame的每个元素中
· 参数只接收可调用的函数
常用的用法呢就是前边举的例子中的那些了,希望这边文章能帮助大家分清apply、map和applymap并能灵活运用它们。
更多优质内容及精彩资讯,点击【了解更多】进入!
map和mapping区别
,
python map和apply
,
map函数和foreach
,
apply map区别
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
nczhangyun
nczhangyun
当前离线
积分
1584
窥视卡
雷达卡
31
主题
798
帖子
1584
积分
金牌飞友
金牌飞友, 积分 1584, 距离下一级还需 1416 积分
金牌飞友, 积分 1584, 距离下一级还需 1416 积分
积分
1584
飞币
776
注册时间
2017-8-19
发消息
发表于 2022-11-26 11:34:26
|
显示全部楼层
转发了
回复
支持
反对
使用道具
举报
照妖镜
tpzmj
tpzmj
当前离线
积分
1601
窥视卡
雷达卡
33
主题
806
帖子
1601
积分
金牌飞友
金牌飞友, 积分 1601, 距离下一级还需 1399 积分
金牌飞友, 积分 1601, 距离下一级还需 1399 积分
积分
1601
飞币
793
注册时间
2017-9-30
发消息
发表于 2022-11-26 11:41:21
|
显示全部楼层
明白了,谢谢楼主。
回复
支持
反对
使用道具
举报
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表