dataframe 一列的不同值_pandas | 详解DataFrame中的apply与applymap方法

点击上方蓝字,关注并星标,和我一起学技术。

333a45138d413700d0a43e4bf9b20061.png

今天是pandas数据处理专题的第5篇文章,我们来聊聊pandas的一些高级运算。

在上一篇文章当中,我们介绍了panads的一些计算方法,比如两个dataframe的四则运算,以及dataframe填充Null的方法。今天这篇文章我们来聊聊dataframe中的广播机制,以及apply函数的使用方法。

dataframe广播

广播机制我们其实并不陌生, 我们在之前介绍numpy的专题文章当中曾经介绍过广播。当我们对两个尺寸不一致的数组进行运算的时候,系统会自动将其中维度较小的那个填充成和另外一个一样再进行计算。

比如我们将一个二维数组减去一个一维数组,numpy会先将一位数组拓展到二维之后再进行减法运算。看起来就像是二维数组的每一行分别减去了这一个一维数组一样。可以理解成我们将减去这一个一维数组的操作广播到了二维数组的每一行或者是每一列当中。

bffaba642d1355943f9680536b31b5db.png

在上面这个例子当中我们创建了一个numpy的数组,然后减去了它的第一行。我们对比下最后的结果会发现,arr数组当中的每一行都减去了它的第一行。

同样的操作在dataframe也一样可以进行。

145ca1a5c0a5d3a0e62ab4c1153e189e.png

我们当然也可以对某一列进行广播,但是dataframe四则运算的广播机制默认对行生效,如果要对列使用的话,我们需要使用算术运算方法,并且指定希望匹配的轴。

c53729ef7d4c49b000fc7f1abccdc046.png

函数与映射

pandas的另外一个优点是兼容了numpy当中的一些运算方法和函数,使得我们也可以将一些numpy当中的函数运用在DataFrame上,这样就大大拓展了使用方法以及运算方法。

比如我们要将DataFrame当中所有的元素变成它的平方,我们利用numpy的square方法可以很容易做到:

f4936bc8bd0f2196a7619b70c8fa9f60.png

我们可以将DataFrame作为numpy函数的参数传入,但如果我们想要自己定义一个方法并且应用在DataFrame上怎么办?

我们可以利用apply方法很容易地实现这一点,apply方法有些像是Python原生的map方法,可以对DataFrame当中的每一个元素做一个映射计算。我们只需要在apply方法当中传入我们想要应用在DataFrame上的方法即可,也就是说它接受的参数是一个函数,这是一个很典型的函数式编程的应用。

比如我们想要对DataFrame进行平方操作,我们也可以将np.square函数当做参数传入。

ecbc0688bd3fb3ae7cccc2dda05044af.png

apply方法除了可以用在一整个DataFrame上之外,我们也可以让它应用在某一行或者是某一列或者是某一个部分上,应用的方法都是一样的。比如我们可以这样对DataFrame当中的某一行以及某一列应用平方这个方法。

aeadc5402bb480b9b38ecb9d1a0ea919.png

另外,apply中函数的作用域并不只局限在元素,我们也可以写出作用在一行或者是一列上的函数。比如我们想要计算出DataFrame当中每一列的最大值,我们可以这样写:

0b9cd0638e9e5f805652b51bb305840c.png

这个匿名函数当中的x其实是一个Series,那这里的max就是Series自带的max方法。也就是说apply的作用范围是Series,虽然最终的效果是每一个元素都被改变了,但是apply的作用域并不是元素而是Series。我们通过apply操作行或者列,行和列将改变应用到每一个元素。

同样我们也可以将apply的应用对象限定为行,同样我们需要通过传入axis来限定,我们可以传入axis='columns',也可以指定axis=1,这两者的效果是一样的。

8f0d37ed1e460824868bc4a31cb9ecb1.png

另外,apply返回的结果并不一定只能是标量,也可以是多个值组成的list或者是Series,其实两者也是一样的,因为即使返回List也会被转化成Series。

cbba83c8c90864d9ddc55d03f804f4d5.png

最后我们来介绍一下applymap,它是元素级的map,我们可以用它来操作DataFrame中的每一个元素。比如我们可以用它来转换DataFrame当中数据的格式。

c3869ef2404d1a4d9ff8ce390d8dcf9b.png

之所以我们叫它applymap而不是map,是因为在Series的方法当中,已经有了map,所以为了区分创建了applymap。

这里要注意,如果将上面代码中的applymap改成apply是会报错的。报错的原因也很简单,因为apply方法的作用域不是元素而是Series,Series并不支持这样的操作。

总结

今天的文章我们主要介绍了pandas当中apply与applymap的使用方法, 这两个方法在我们日常操作DataFrame的数据非常常用,可以说是手术刀级的api。熟练掌握对于我们搞定数据处理非常有帮助,如果大家理解Python中原生的map方法的应用,相信一定也可以很顺利地理解今天的文章。

今天的文章到这里就结束了,如果喜欢本文的话,请来一波素质三连,给我一点支持吧(关注、在看、点赞)。

99d763bf420e89089bf543dcdb3535dd.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

https访问http加载不出图片_前端解决第三方图片防盗链的办法

作者:biaochenxuying转发链接:https://github.com/biaochenxuying/blog/issues/31问题笔者网站的图片都是上传到第三方网站上的,比如 简书、掘金、七牛云上的,但是最近简书和掘金都开启了 防盗链,防止其他网站访问他们…

java spring boot 注解验证_如何理解Java原生注解和Spring 各种注解?

作者:digdeep.cnblogs.com/digdeep/p/4525567.html导引Spring中的注解大概可以分为两大类:spring的bean容器相关的注解,或者说bean工厂相关的注解;springmvc相关的注解。spring的bean容器相关的注解有:Required&#x…

数据驱动的未来城市八大趋势

来源:微信公众号腾讯研究院 趋势一 更可持续 城市的发展要为整个人类文明的永续传承和为后人能享受到更高质量的生活为目标。一个更加智慧的城市,势必具有着更加可持续发展的能力。新科技为城市的核心系统的设施提供了更为智能、高效率的调配方案&#x…

浪潮服务器bios怎么找回密码,服务器BIOS密码丢失解决方法

先升级iBMC,再升级bios,可以将bios密码重置。此案例以RH2288为例:1、登录到iBMC web界面,点击系统设置里的固件升级,将BMC升级包image.hpm上传后,点击升级,因为BMC主备两个镜像,需要…

看了中国与别国的科研差距后,究竟什么才是真正的科研精神?

来源:募格学术 目前,中国的科研环境越来越好,单就硬件上来讲,与欧美发达国家没有很大差别。2014年,中国研发投入13400亿元,占GPD2.1%,这个比例超过了欧盟。然而,引人深思的是中国缺席…

numpy 转置_Numpy基础:数组转置和轴对换

转置(transpose)是重塑的一种特殊形式,它返回的是源数据的视图(不会进行任何复制操作)。数组不仅有transpose方法,还有一个特殊的T属性。In[70]:arrnp.arange(15).reshape((3,5))In[71]:arrOut[71]: array(…

word2016 图片去底灰_看来看去,还是高级灰最耐看,喜欢现代简约风的你,选它准不会错...

经常看到有人问:不想要大白墙,给家里装点什么颜色好?这个问题其实没有固定答案,毕竟对于色彩的感受,每个人都不一样。没有固定答案不代表没有选择,好看又百搭的色彩有很多,但是能做到经典与时尚…

惊人的预测——来自2019麦肯锡报告《中国与世界》完整版

来源:麦肯锡全球研究院 自从中国开始建立与世界各国的经济往来、拥抱市场机制,并积极接纳全球最佳实践以后, 中国经济便迈入了腾飞阶段。如今,中国已凭借其庞大的经济体量跻身全球大国之列。中国在2013年跃居全球第一大商品贸易国…

匹夫细说C#:庖丁解牛迭代器,那些藏在幕后的秘密

匹夫细说C#:庖丁解牛迭代器,那些藏在幕后的秘密c#语言规范阅读目录0x00 前言0x01 你好,迭代器0x02 原来是状态机呀0x03 状态管理0x04 总结回到目录0x00 前言在匹夫的上一篇文章《匹夫细说C#:不是“栈类型”的值类型,从…

法国公布“人机协同”项目第二批研究计划

来源:法国《航宇防务》/图片来自互联网出处:国防科技要闻近日,法国公布了“人机协同”(MMT)项目第二批研究计划。MMT项目由法国武器装备总署(DGA)管理,于2018年3月启动,是…

xp打印服务器win10的系统连接不上,Win10系统访问WinXP系统共享打印机却连接不了的解决方法...

在今天的Win10系统的使用教程中,我们将来学习的是Win10系统访问WinXP系统共享打印机却连接不了的问题。不过,小编得事先说一下,Win10系统是可以直接连接WinXP系统共享打印机的,只是个别用户由于一些原因而出现这个状况&#xff0c…

c++ map初始化同时赋值_Golang入门教程——map篇

点击上方蓝字,和我一起学技术。今天是golang专题的第7篇文章,我们来聊聊golang当中map的用法。map这个数据结构我们经常使用,存储的是key-value的键值对。在C/java当中叫做map,在Python中叫做dict。这些数据结构的名称虽然不尽相同…

知识图谱简史:从1950到2019

来源:专知 地址:http://knowledgegraph.today/paper.html 作者 | Claudio Gutierrez 、 Juan F. Sequeda 编译 | Xiaowen 目录: 知识图谱可以被认为是实现计算机科学的早期愿景,即创建能够大规模集成知识和数据的智能系统。“知识…

影响计算机算法世界的十位大师(上)

来源:数学职业家1、伟大的智者——Don E.Knuth,中文名:高德纳(1938-)算法和程序设计技术的先驱者。Oh,God!一些国外网站这样评价他。一般说来,不知道此人的程序员是不可原谅的。其经典著作《计算机程序设计艺术》更是被誉为算法中…

echars显示折点数据_数据可视化的基础语法

数据可视化的基础语法可视化主要是以图像来展示数据间的关系,常见的图形种类有折线图,散点图,条形图,直方图,饼图。此外在接下来课程中还会用到箱线图,热力图,蜘蛛图,表示二元变量分布和成对关系的视图。今…

cad快捷键文件路径_办公格式转太难不会看这里!CAD、PDF、Word、Excel、TXT教你玩转...

办公格式转,你遇到最难解决的问题是哪些?办公格式转,最让你头疼的文件格式是哪些?办公格式转,你最想要学习转换格式有哪些?我:Word、Excel、PPT、TXT、CAD、PDF、JPG统统都想要进行解决&#xf…

80x86汇编—分支循环程序设计

文章目录 查表法: 实现16进制数转ASCII码显示计算AX的绝对值判断有无实根地址表形成多分支从100,99,...,2,1倒序累加输入一个字符,然后输出它的二进制数大小写转换大写转小写小写转大写 冒泡排序剔除空格 查表法: 实现16进制数转ASCII码显示 题目要求: …

织梦服务器系统win10,WIN服务器爆破DEDECMS后台目录

利用脚本python:#!/usr/bin/env python/** author Mochazz* team 红日安全团队* env pyton3**/import requestsimport itertoolscharacters "abcdefghijklmnopqrstuvwxyz0123456789_!#"back_dir ""flag 0url "http://192.168.1.9/t…

人工智能技术对专利制度的挑战与应对

来源:上海市法学会内容摘要人工智能技术作为人类的一项发明创造,本身具备了一定的创造力。无论是专利法治实践还是理论研究均无法否认,在弱人工智能时代,人工智能技术兼具发明创造工具和发明创造方案的提供者的双重身份。由此导致…

网络推广恶意点击js_做好网络推广,是做好网络营销的必要条件

互联网社会里网络无处不在,商机无处不在,企业通过网络营销,能有效的避免线下竞争激烈的市场,做好网络推广,是做好网络营销的必要条件。一个优秀的网络推广团队不但能实现提高企业的知名度的目的,还能帮助企…