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,一经查实,立即删除!

相关文章

JS电子文档链接

http://www.oschina.net/translate/learning-javascript-design-patterns 学用 JavaScript 设计模式 http://es6.ruanyifeng.com/                       ECMAScript 6 入门 https://github.com/justjavac/12-javascript-quirks …

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主备两个镜像,需要…

现在早上起来都还是感觉颈椎有些通

不会得了颈椎病吧 转载于:https://www.cnblogs.com/bkchengzheng/p/6228103.html

惠普打印机136w硒鼓芯片怎么清零_关于惠普彩激升级后无法识别硒鼓的处理方案...

近日来收到不少用户反馈自己的惠普彩色激光机升级固件后无法识别硒鼓了,但是以前都能识别,硒鼓是兼容的。这是因为惠普的最新发布的固件版本20201021增加了验证机制,识别到硒鼓是非原装的时候直接锁机,拒绝使用,这也是…

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

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

删除计算机文件的几种方法,电脑删除不了文件怎么办?教你几种好的处理方法,一学就会...

现在是电脑的时代,我们每天都要在计算机上处理大量的文件。但是有的时候,电脑上会出现删不了文件的情况。出现这种情况可能是下面的几种原因。1.首先检查与文件相关的软件是否正常运行,并且尝试关闭它。如果你正在编辑或查看office文档&#…

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

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

Jmeter学习

网址: http://www.ltesting.net/ceshi/open/kyxncsgj/jmeter/ http://www.cnblogs.com/TankXiao/p/4059378.html?utm_sourcetuicool http://blog.csdn.net/chenleixing/article/details/43418185/ http://www.blogjava.net/lijun_li/archive/2014/06/26/296453.htm…

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

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

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

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

css线加点的进度,纯CSS实现的交互式进度条(点击带进度填充动画)

CSS语言:CSSSCSS确定.bar {display: flex;flex-direction: row-reverse;margin: auto auto 0;width: 300px;max-width: calc(100% - 30px);}.bar-input {opacity: 0;pointer-events: none;position: absolute;top: -9999px;left: -9999px;}.bar-input:checked ~ .ba…

python创建长度为n的数组_在Python中建立N维数组并赋初值

在Python中,由于不像C/Java这样的语言可以方便的用a[i][j]0的方式,建立二维数组并赋初值,所以需要一个相对巧妙的方法。 可以用列表解析的方式,eg: >>> mat[[0 for i in range(5)] for j in range(5)]>>>mat [[…

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

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

贴花纸怎么贴_陶瓷贴花纸DIY怎么做?

A:1 释义 编辑本段词目:陶瓷花纸拼音:to c huā zhǐ英文:ceramic stained paper2 什么是陶瓷花纸? 编辑本段陶瓷花纸也叫做陶瓷粘花纸。陶瓷粘花纸是指在陶瓷(或瓷坯)表面贴上印刷好的陶瓷专用花纸…

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

来源:法国《航宇防务》/图片来自互联网出处:国防科技要闻近日,法国公布了“人机协同”(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。这些数据结构的名称虽然不尽相同…