pandas取出某一列_Pandas高级运算 | apply与applymap方法详解

5b8812e6259b9fcc907e5f2f5650df45.gif

1117f28293fad2e82b40987e94e1a494.png

大家好,今天我们来聊聊pandas的一些高级运算。

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

dataframe广播

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

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

2975ca74730da02c6156a610b46bc1f7.png

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

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

9d083bfeed2b1fdf1a741fe2e83f6c52.png


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

e5f3354f437ef5132de0db501b4d6d76.png

函数与映射

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

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

d6e4fa1322ac7355a1e87ba760da4597.png

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

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

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

6d29b690aa384e9fba0f3e680b3ede23.png

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

bc39bb88d5218271f430c2423c05b3b7.png

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

078dc6868dd87d6fc0ec1e206a179842.png

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

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

6fa025e9f2a6c04cc62e70a6443b6572.png

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

bd7ee0642de57b577e58a2bb898ec81d.png


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

2e10668b37238c7b0a86c6ed672b3e12.png

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

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

总结

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

753644d5385d550c88265795af241b17.png

THE END

90a72809c9d23321d4d7b60656969267.png

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

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

相关文章

Protobuf使用规范分享

Protobuf使用规范分享 一、Protobuf 的优点 Protobuf 有如 XML,不过它更小、更快、也更简单。它以高效的二进制方式存储,比 XML 小 3 到 10 倍,快 20 到 100 倍。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个…

深度|​揭秘5G+AI时代的机器人世界!七大核心技术改变人类生活!

来源:电子工程世界AI 和 5G 与机器人技术结合,正在不断催生新的消费电子品类。AI 解决机器理解世界,以及人机交互的问题。5G 拓展机器人的活动边界,并为机器人提供更大的算力和存储空间(云协作机器人) 。根…

卡农 matlab,matlab 编的卡农

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼% Cripple Pachebels Canon on Matlab% Have fun fs 44100; % sample ratedt 1/fs; T16 0.125; t16 [0:dt:T16];[temp k] size(t16); t4 linspace(0,4*T16,4*k);t8 linspace(0,2*T16,2*k); [temp i] size(t4);[temp j] si…

点击按钮,缩放图片(img.width、img.style.width、img.offsetWidth)

前几天在慕课网上看到一个关于图片缩放的教学视频,因为当时对老师使用img.width,而不是使用img.style.width而感到奇怪,所以周末得空了,想来自己试着写出来,相关视频网址如下:http://www.imooc.com/video/1111&#xf…

sql怎么继续编辑已经保存的代码_某团购CMS的GETSHELL操作代码审计

作者:会上树的猪合天智汇 0x00 写点废话在渗透测试中,获取一个webshell应该是我们不屑的追求,今天要通过这个CMS从代码的角度看一下可利用的getshell的方法。这一次的代码审计需要借助工具来定位可能存在的漏洞点,选择Seay源代码审…

测温枪的工作原理全面解析,如何测出你的温度

来源:世界先进制造技术论坛内容来源:网络测温枪,学名是“红外线测温仪”或者“红外线辐射测温仪”。它的原理是:被动吸收目标的红外辐射能量,从而获得物体温度数值。这次疫情,让这个小东西一下子&#xff0…

mysql不要放docker,Docker从入门到放弃

本文将以比较简单的的方式让大家理解docker,以平时常用到的测试环境为主,从用开始,慢慢理解docker。0x00 用docker进行漏洞测试0x01 docker运行busybox0x02 Docker 搭建运行apache-php环境0x03 用Dockerfile自动化构建可ssh登陆的镜像0x04 Do…

二叉树02

为了加强记忆我又写了一遍二叉树的基本代码。比上一次多了一点点功能。 1 #include<stdio.h>2 #include<iostream>3 using namespace std;4 struct Bitree{//二叉树的结构 5 int val;6 Bitree *lchild,*rchild;7 };8 void creat(Bitree * &T)//创建树 …

一个对称性解释三个宇宙学难题;引力波碰撞会发光?粘液霉菌助力寻找宇宙网 | 一周科技速览...

来源&#xff1a;返朴撰文 &#xff1a;董唯元、杨凌、顾舒晨、洪俊贤、太阁尔、姜小满目 录1. 一个对称性解释三个宇宙学难题2. 引力波碰撞会发光&#xff1f;3. 粘液霉菌助力寻找宇宙网4. 听&#xff0c;是杂质原子的声音5. 更快了&#xff01;地球的大型生态系统在崩溃6. 究…

如何用python爬虫赚早餐_如何利用python爬虫挣钱

Python爬虫是用Python编程语言实现的网络爬虫&#xff0c;主要用于网络数据的抓取和处理&#xff0c;相比于其他语言&#xff0c;Python是一门非常适合开发网络爬虫的编程语言&#xff0c;大量内置包&#xff0c;可以轻松实现网络爬虫功能。那么使用python如何赚钱呢&#xff1…

一ElasticSearch安装启动

参考官方&#xff1a;https://www.elastic.co/downloads/elasticsearch 转载于:https://www.cnblogs.com/tangyongathuse/p/6840231.html

python中表达式4+0.5值的数据类型为_python中,数字类型计算

说明&#xff1a;今天在看python数字类型的操作&#xff0c;在此记录下。操作过程&#xff1a;1.数字的加减乘除>>> 2 24>>> 4 - 22>>> 2 - 4-2>>> 2 * 24>>> 2 / 2 #除法的结果会返回小数的结果&#xff0c;如果是整除&#xf…

结构化数据不应该被人工智能忘之脑后 !

来源&#xff1a;Ihab Ilyas在处理非结构化数据的问题上&#xff0c;人工智能和深度学习方法一直都表现出众且广为人知&#xff0c;无论是在自然语言处理、知识库自动构建&#xff0c;还是图像视频的识别和生成应用中&#xff0c;都有很多成熟案例。然而对于结构化数据的研究&a…

php修改找不到数据类型,php – 在$_POST中找不到输入类型=图像值

只需使用var_dump()来查看$_POST中的内容&#xff1a;var_dump($_POST);您会看到,当您使用< input type “image”>提交表单时,您会得到&#xff1a;arraybuyuka_x > string 0 (length1)buyuka_y > string 0 (length1)所以,没有$_POST [‘buyuka’] – 相反,有&…

java数据类型转换和数组总结

流程控制 分支 循环语句     if...else...     if...else if...else switch(值0) { ------------值0是什么类型, case后面的值就要是什么类型       case 值1:         执行语句         break;       case 值1:         …

导入自定义模块syntaxerror: invalid syntax_技术分享 | Quill的模块机制

DevUI技术体验部是一支兼具设计视角和工程视角的团队&#xff0c;服务于华为云DevCloud平台和华为内部上百个中后台系统&#xff0c;主打产品 DevUI Design 服务于设计师和前端工程师。官方网站&#xff1a;devui.design。Ng组件库&#xff1a;ng-devui。DevUI Design&#xff…

我们对时间的理解错了吗?

来源&#xff1a; 利维坦文/Claudia Hammond译/boomchacha校对/Rachel原文/www.bbc.com/future/article/20191203-what-we-get-wrong-about-time“时间”是常见的名词。我们都熟知时间流逝的感觉&#xff1a;现在变成过去&#xff1b;今天变成昨天。你要是住在温带&#xff0c;…

php jquery validate remote,jquery插件validate里面的remote参数用法

validate验证在进行异步数据库查询验证的过程中用到了remote这个参数remote里面有url,dataType,data,type等等这几个参数&#xff0c;当data不写的时候默认是当前被验证的字段的值。传值到php文件中&#xff0c;在php文件中处理的时候&#xff0c;返回值为 “true”或者"f…

SVN使用过程中遇到的一些问题

更新svn的客户端TortoiseSVN后 &#xff0c;之前使用svn管理的文件的关联图标消失了 说明:下面的解决方法及图片来自博客&#xff1a;装了SVN&#xff0c;你的关联图标变了没有&#xff1f; 解决办法&#xff1a;在同步的文件点击右键如下图 ...现则Settings&#xff0c;出现的…

python计算线性相关系数_Python+pandas计算数据相关系数(person、Kendall、spearman)

pandas中DataFrame对象corr()方法的用法&#xff0c;该方法用来计算DataFrame对象中所有列之间的相关系数(包括pearson相关系数、Kendall Tau相关系数和spearman秩相关)。pandas相关系数-DataFrame.corr()参数详解DataFrame.corr(methodpearson, min_periods1)参数说明&#xf…