Pandas 数据处理三大利器 apply、map、applymap

 

写在前面

        · apply:应用在DataFrame的行或列中,也可以应用到单独一个Series的每个元素中

        · map:应用在单独一个Series的每个元素中

        · applymap:应用在DataFrame的每个元素中

目录

一、apply

1、apply应用到DataFrame中

2、apply应用到Series中

 二、map

 三、applymap


一、apply

apply是沿DataFrame的轴应用功能,传递给函数的对象是Series对象,其索引为DataFrame的索引(axis = 0'')或DataFrame的列(axis = 1'')

构建df表:

1、apply应用到DataFrame中

需求:如果我们求一下每一列的极差,注意axis参数的设置,一般默认为0,即求每一列的极差

 apply的参数可以直接接收现成的函数,也可以接收自定义函数,比如自定义的求极差匿名函数:

 通过对轴信息的设置,也可以求每一行的极差:

注意:结果的索引能够很明显看出现在求的是行极差还是列极差,如果是行极差,索引是行标签,如果是列极差,索引是列名。

        另外,对整个DataFrame运用apply的时候,要保证所有的字段都是符合作为参数的函数要求才可以,比如在例子中求极值得保证所有字段都是数值型才行,如果整个DataFrame不能满足要求,可以把符合要求的字段切出来再应用apply。如果有需要,也可以把求的结果添加到原表当中。

2、apply应用到Series中

 需求:将A列的所有元素转换数据类型,从整型转换成浮点型:

总结:apply运用到整个DataFrame中可以执行整列或者整行的运算,运用到Series中,执行的是对每个元素的运算,这个运算map也可以实现。

 二、map

map是应用于Series的,参数可以是函数也可以字典。

创建表df1:

需求:将性别转换成0和1,女为0,男为1。

        这个时候可以用map()代替循环 轻松实现转换,先看下通过函数传参处理形式:

def gender(x):  
    if x == "男":
        G = 1
    else 0
    return G
df1['性别'].map(gender)

map的参数除了可以是参数,也可以是字典,这和apply对参数的要求不同:

三、applymap

applymap是把函数应用到DataFrame中的每个元素上的,要和apply对整列或者整行进行的操作区分开,apply想要直接对每个元素进行操作,得单独提取出Series才可以实现,不能直接再整个DataFrame上执行。

创建表df:

需求:要把每个元素的数据类型都转换成浮点型。applymap()就派上用场了

总结:

        apply:

                · 既可以用在DataFrame,也可以用到单独的Series中

                · 运用到DataFrame时,是用到了整行或者整列上,不是逐一运用到每个元素上

                · 运用到Series时,作用到每个元素上

                · 第一个参数只接收python原生函数或者numpy中的函数

        map:

                · 只能运用到Series的每个元素上

                · 参数可以是函数也可以是字典,还可以是序列

        applymap:

                · 只能应用在DataFrame中,并且是作用在DataFrame的每个元素中

                · 参数只接收可调用的函数。

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值