python数据分析——apply 2

参考资料:活用pandas库

1、向量化函数

        使用apply时,可以按行或按列应用函数。如果想应用自定义的函数,必须重写它,因为整列或整行传递到了函数的第一个参数中。可以利用向量化函数和装饰器对所有函数进行向量化。对代码进行向量化也可以提升运行性能。

# 导入pandas库
import pandas as pd#创建一个DataFrame
df=pd.DataFrame({'a':[10,20,30],'b':[20,30,40]
})# 创建自定义函数
def avg_2(x,y):return (x+y)/2.

        对于向量函数,我们希望向上述自定函数中的x和y分别传入一个值向量,结果应该是给定x值和y值得平均值,并且顺序保持不变,即能写成avg_2(df['a'],df['b']),并且结果类似于[15,25,35]。

        使用numpy库的vetorize函数。把要向量化的函数传递给np.vectorize,创建新函数。

        如果函数是自定义的,也可以使用python装饰器“自动”把函数向量化。装饰器是函数,它们以其他函数为输入并修改其行为。

# 导入 numpy库
import numpy as np
# 自定义函数
# 此函数无法用于向量计算,但可以用于单个值的计算
def avg_2_mod(x,y):"""当x不等于20时,计算平均值"""if(x==20):return np.NaNelse:return (x+y)/2# np.vectorize创建向量化函数
avg_2_mod_vec=np.vectorize(avg_2_mod)
print(avg_2_mod_vec(df['a'],df['b']))# 装饰器
# 为了使用vectorize装饰器,要在函数定义之前使用@符号
@np.vectorize
def v_avg_2_mod(x,y):"""当x不等于20时,计算平均值和前面一样,但这里使用vectorize装饰器"""if x==20:return np.nanelse:return (x+y)/2
# 可以直接使用此向量化的函数
print(v_avg_2_mod(df['a'],df['b']))

2、lambda函数

        有时,apply方法中使用的函数非常简单,无须单独创建。

        编写lambda函数需要使用lambda关键字。由于apply函数会把整行或整列作为第一个参数传递过来,所以lambda函数只有一个参数x。然后可以直接编写函数,而不必定义它,而且结果结果会自动返回。

        虽然可以编写复杂的lambda函数,但通常只在需要单行计算时,才会使用lambda函数。如果lambda函数中包含过多代码,会难以阅读。

import re
docs=pd.read_csv(r"...\data\doctors.csv",header=None)
p=re.compile('\w+\s+\w+')# 方法1,先编写一个函数,在调用apply应用它
# 自定义函数
def get_name(s):return p.match(s).group()
docs['name_func']=docs[0].apply(get_name)
print(docs)# 方法2,直接用lambda函数
docs['name_lamb']=docs[0].apply(lambda x: p.match(x).group())
print(docs)

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

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

相关文章

再论任何图≌自己这一几何最最起码常识推翻平面公理

黄小宁 有了解析几何使人类对直线和射线的认识有革命性的飞跃。几何学有史2300年来一直认定起点和射出的方向都相同的射线必重合,任两异射线必有全等关系;解析几何使我发现这是2300年肉眼直观错觉。 h定理(参考文献中的定理)&am…

台式机安装ubuntu过程

1.单系统参考 20231210-超详细Ubuntu20.04单系统安装_台式机安装ubuntu系统-CSDN博客 2.双系统参考 双系统启动效果_哔哩哔哩_bilibili 安装前一定要先清空电脑的硬盘数据,不然可能会出现以下图片异常 意思估计是分区被占用了,出现这个问题 &#xff0…

安全基础二

一、插件漏洞 统计使用了哪些插件这些插件有版本更新嘛检测这些插件是否存在已知漏洞 二、权限提升和持久化 SSRF(Server-Side Request Forgery,服务器端请求伪造) 想象一下,你是一个公司的内部员工(服务器&#x…

知攻善防应急响应靶机训练-Web2

前言: 本次应急响应靶机采用的是知攻善防实验室的Web-2应急响应靶机 靶机下载地址为: https://pan.quark.cn/s/4b6dffd0c51a 相关账户密码 用户:administrator 密码:Zgsfqq.com 解题过程: 一、攻击者的IP地址(两个)…

防火墙基础基础篇:NAT转发功能之——Easy IP方式详解

防火墙基础基础篇:NAT转发功能之——Easy IP方式详解 1. 概念 Easy IP 是一种简化版的动态NAPT(Network Address and Port Translation)技术。在Easy IP中,我们只使用一个公网IP地址,无需建立公有IP地址池。这个公网…

2024 年科技裁员综合清单

推荐阅读: 独立国家的共同财富 美国千禧一代的收入低于父辈 创造大量就业机会却毁掉了财富 这四件事是创造国家财富的关键 全球财富报告证实联盟自始至终无能 美国人已陷入无休止债务循环中,这正在耗尽他们的财务生命 2024 年,科技行业…

基于Java的高校学生勤工助学优派系统的设计与实现(论文+源码)_kaic

摘 要 高校勤工助学管理系统的出现,让学生的工作更加标准,不仅仅使高校办公室的办公水平以及管理水平大大提高,还优化了勤工助学资金的使用方式方法,完善了资助所需费用的资源配置,可以卓有成效地缩减学校的管理经费。本系统主…

《python编程从入门到实践》day40

# 昨日知识点回顾 编辑条目及创建用户账户 暂没能解决bug: The view learning_logs.views.edit_entry didnt return an HttpResponse object. It returned None instead.# 今日知识点学习 19.2.5 注销 提供让用户注销的途径 1.在base.html中添加注销链接 …

esp8266的rtos和nonos区别

https://bbs.espressif.com/viewtopic.php?t75242#p100294 https://blog.csdn.net/ydogg/article/details/72598752

Akamai 最新版逆向分析 akamai逆向 dhl网址

原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 URL(base64加密处理):aHR0cHM6Ly93d3cuZGhsLmNvbS9jbi16aC9ob21lL3RyYWNraW5nL3RyYWNraW5nLWVjb21tZXJ…

Java | Leetcode Java题解之第115题不同的子序列

题目&#xff1a; 题解&#xff1a; class Solution {public int numDistinct(String s, String t) {int m s.length(), n t.length();if (m < n) {return 0;}int[][] dp new int[m 1][n 1];for (int i 0; i < m; i) {dp[i][n] 1;}for (int i m - 1; i > 0; …

计算机网络路由协议之内部网关协议RIP例题与详解

互联网的路由选择协议 路由器转发表的路由协议如何得出呢&#xff1f; 使用路由算法进行&#xff0c;路由算法可以分为两类&#xff1a; 静态路由选择策略和动态路由选择策略。 静态路由选择策略&#xff1a; 非自适应路由选择&#xff0c;人工配置每一条路由。 动态路由选…

图解 Transformer

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

安装ROS 2 Jazzy Jalisco

参考&#xff1a; https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debians.html 先要安装一个ubuntu&#xff0c;对老旧硬件最友好的版本Lubuntu&#xff1a; 安装Lubuntu24.04-CSDN博客 过程&#xff1a; 按文档一步步走下去&#xff1a; 遇到问题查找通用案…

鸿蒙ArkTS声明式开发:跨平台支持列表【按键事件】

按键事件 按键事件指组件与键盘、遥控器等按键设备交互时触发的事件&#xff0c;适用于所有可获焦组件&#xff0c;例如Button。对于Text&#xff0c;Image等默认不可获焦的组件&#xff0c;可以设置focusable属性为true后使用按键事件。 说明&#xff1a; 开发前请熟悉鸿蒙开…

(十二)统计学基础练习题六(选择题T251-300)

本文整理了统计学基础知识相关的练习题&#xff0c;共50道&#xff0c;适用于想巩固统计学基础或备考的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-统计学二&#xff09;。序号之前的题请看往期文章。 251&#xff09; 252&#xff09; 253&#xff09; 2…

基于SpringBoot设计模式之结构型设计模式·适配器模式

文章目录 介绍开始使用委托的适配器&#xff08;媒体播放器&#xff09;架构图定义被适配者定义需求接口定义适配者 使用继承的适配器&#xff08;手机充电接口&#xff09;架构图定义被适配者定义需求接口定义适配者 测试样例 总结优点缺点 介绍 在程序世界中&#xff0c;经常…

Linux shell编程学习笔记50:who命令

0 前言 2024年的网络安全检查又开始了&#xff0c;对于使用基于Linux的国产电脑&#xff0c;我们可以编写一个脚本来收集系统的有关信息。比如&#xff0c;我们可以使用who命令来收集当前已登陆系统的用户信息&#xff0c;当前运行级别等信息。 1. who命令 的功能、格式和选项…

对未知程序所创建的带有折叠书签的 PDF 文件书签层级全展开导致丢失的一种解决方法

对需要经常查阅、或连续长时间阅读的带有折叠书签的 PDF 文档展开书签层级&#xff0c;提高阅览导航快捷是非常有必要的。 下面是两种常用书签层级全展开的方法 1、 FreePic2Pdf 1 - 2 - 3 - 4 - 5 - 6&#xff0c;先提取后回挂 2、PdgCntEditor 载入后&#xff0c;直接保存…

JVM(内存区域划分、类加载机制、垃圾回收机制)

目录 一. 内存区域划分 1.本地方法栈(Native Method Stacks) 2.虚拟机栈(JVM Stacks) 3.程序计数器(Program Counter Register) 4.堆(Heap) 5.元数据区(Metaspace) 二.类加载机制 1.加载 2.验证 3.准备 4.解析 5.初始化 "双亲委派模型" 三. GC 垃圾回收…