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并能灵活运用它们。

更多优质内容及精彩资讯,点击【了解更多】进入!

controller 用 map 接收值_一文弄懂apply、map和applymap三种函数的区别相关推荐

  1. CAD2010 为了保护_一文弄懂,锂电池的充电电路,以及它的保护电路方案设计

    原标题:一文弄懂,锂电池的充电电路,以及它的保护电路方案设计 锂电池特性 首先,芯片哥问一句简单的问题,为什么很多电池都是锂电池? 锂电池,工程师对它都不会感到陌生.在电子产品项目开发的过程中,尤其是 ...

  2. vue中data定义数字类型_[乐意黎原创] Vue中data定义的三种方式和区别

    在 Vue中,定义data时,经常有好几种写法,一不小心会混淆,这里彻底详述一下,以便记分清 . 一.在vue中,定义data可以有三种写法. 1. 第一种写法,data是一个对象. var app ...

  3. 两个线程同时从服务器接收消息_一文看懂I/O多路复用技术(mysql线程池)

    概述 当我们要编写一个echo服务器程序的时候,需要对用户从标准输入键入的交互命令做出响应.在这种情况下,服务器必须响应两个相互独立的I/O事件:1)网络客户端发起网络连接请求,2)用户在键盘上键入命 ...

  4. JAVA中如何取map的值_如何在java中取map中的键值 的两种方法

    第一种方法根据键值的名字取值 import java.util.HashMap; import java.util.Map; public class Test { /** * @param args ...

  5. 继电器rc吸收电路取值_一文读懂继电器的工作原理以及驱动电路

    继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种"自动开关".故在电路中起 ...

  6. 分计算iv值_一文读懂评分卡的IV、KS、AUC、GINI指标

    前言: 当一张评分卡构建完成时,筛选出一组特征生成了分数,我们会想要知道这个分数是否靠谱,即是否可以依赖这个分数将好坏客户区分开来,这个时候就需要评判评分卡有效性的指标. 测量评分卡好坏区分能力的指标 ...

  7. 查看dataloader的大小_一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系

    以下内容都是针对Pytorch 1.0-1.1介绍. 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握 ...

  8. jh锂电保护电路_一文弄懂,锂电池的充电电路,以及它的保护电路方案设计

    锂电池特性 首先,芯片哥问一句简单的问题,为什么很多电池都是锂电池? 锂电池,工程师对它都不会感到陌生.在电子产品项目开发的过程中,尤其是遇到电池供电的类别项目,工程师就会和锂电池打交道. 这是因为锂 ...

  9. java输出链表的值_[剑指offer] 从尾到头打印链表(三种方法) java

    一.每次把新遍历的链表值放到list索引为0的位置,实现逆序. public class Solution { public ArrayList printListFromTailToHead(Lis ...

最新文章

  1. 【转】最佳 WordPress 缓存插件:WP Super Cache
  2. java mvc 实际分层_SpringMVC体系分层模式原理图解
  3. 实验吧_NSCTF web200FALSE(代码审计)
  4. Teams Bot如何解析和发送 at 用户
  5. 渐进增强和优雅降级有什么区别
  6. C# .Net中的类型转换(3)
  7. 二元函数可导与可微的关系_视频教学:期末试卷解析之多元函数基本概念及相互关系讨论...
  8. Kubernetes详解(二十一)——ReplicaSet控制器实战应用
  9. superoneclick 2.2_总投资2.2亿!又一年产10万吨水性乳液项目开工
  10. oracle developer连接access
  11. c语言书199页第12题,单片机C语言入门实例和最常见问题分析(含程序部分了)(199页)-原创力文档...
  12. 【故障诊断分析】滚动轴承故障诊断系统含Matlab源码
  13. 简述html的文档基本结构,【简答题】简述 HTML 文档的基本结构。
  14. 详解17000tps的以太坊snark侧链方案
  15. 年薪50万开发者相亲失败:程序员,别输在不会说话上
  16. RS-一般推荐(CF系列)-2018:GCMC
  17. Python调用PHP的函数
  18. VBA实战(09) - 工作簿(WorkBook)
  19. 做学问的三种境界(王国维)和八种境界(梁漱溟)
  20. SpringBoot_liquibase使用

热门文章

  1. 多线程编程(1) - 认识等待函数 WaitForSingleObject
  2. 关于遍历字典的二三事
  3. DNN网络(三)python下用Tensorflow实现DNN网络以及Adagrad优化器
  4. leetcode-反转整数
  5. 判断手机号邮箱号和车牌号是否合法的方法
  6. fragment+tabhost与viewpager
  7. xcode6新建pch文件过程
  8. hdu_1285_确定比赛名次_201312081335
  9. [课程相关]homework-03
  10. ruby+selenium-webdriver一步一步完成自动化测试(5)—–多个测试用例