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.NaN
    else:
        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.nan
    else:
        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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机专业必考之计算机指令设计格式

计算机指令设计格式 例题: 1.设相对寻址的转移指令占3个字节,第一字节为操作码,第二,第三字节为相对偏移量, 数据在存储器以低地址为字地址的存放方式。 每当CPU从存储器取出一个字节时候,自动完成&…

uniCloud云存储uni-cdn七牛云扩展存储-开发uniapp项目节约开发成本

为什么要使用uniCloud的扩展存储,那就是省钱,而且DCloud也一直在推uni-cdn,我在项目中也使用七牛云的扩展存储,确实是省钱,如果你的项目使用到大量的图片后者音视频,这些的算计可以帮你省不少钱。下面就通过…

正邦科技(day1)

1:充电桩工作了两个半小时,已用电量13度电(一般的话是一个小时7度电) 2:火线(红色,棕色),零线(蓝色) 3:充电桩工作了两个半小时&#…

H3CNE-8-ARP工作原理

ARP:Address Resolution Protocol 通过目的IP地址请求对方的MAC地址的过程。 数据链路层在进行数据封装时,需要目的MAC地址。 arp -a 查看 arp -d * 清空 主机A发送一个数据包给主机C之前,首先要获取C的MAC地址 数据封装

Reader类的使用方法和技巧,你掌握了吗?

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

Spring Boot 统一数据返回格式

在 Spring Boot 项目中,统一的数据格式返回是一种良好的实践,它提高了代码的可维护性和一致性,并改善了客户端与服务端之间的通信。本文将介绍如何在 Spring Boot 中实现统一的数据格式返回。 1 为什么需要统一数据返回格式 ⽅便前端程序员更…

2024年电工杯高校数学建模竞赛(A题) 建模解析| 园区微电网风光储协调优化配置

问题重述及方法概述 问题1:各园区独立运营储能配置方案及其经济性分析 经济性分析采用成本-效益分析方法,计算购电量、弃风弃光电量、总供电成本和单位电量平均供电成本等指标。 问题2:联合园区储能配置方案及其经济性分析 经济性分析采用成…

【链表】Leetcode 92. 反转链表 II【中等】

反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#x…

将 KNX 接入 Home Assistant 之一 准备硬件

不久前有人小伙伴买了usb转knx ,详情请看 一个 usb 转 knx 的模块 然后想通过这个设备接入 Home Assistant。 后来了解了一下 Home Assistant 并不直接支持 usb转KNX的接入&#xff0c;需要通过KNXD插件转接才行。 然而尝试了很多次叶没有成功&#xff0c;使用西门子的usb接口以…

【香橙派AIpro】开箱测评

1.板子开箱 哟&#xff0c;看起来还不错哦&#xff01;&#xff01;&#xff01; 收货清单&#xff1a; 主板*1 1.5m数据线*1 充电头*1 1.1.充电头 近65W的充电头&#xff0c;不错不错。 1.2.主板 1.2.1.上面 哇噢&#xff0c;还送了2.4/5G的WiFi和蓝牙天线。 emm&#xf…

React-入门

React由Meta公司研发&#xff0c;是一个用于构建Web和原生交互界面的库 既可以写基于浏览器的应用&#xff0c;还可以写苹果和安卓的原生应用 优势 开发环境搭建 create-react-app是一个快速创建React开发环境的工具&#xff0c;底层是由Webpack构建&#xff0c;封装了配置细…

redis数据类型之string,list

华子目录 key操作说明SCAN cursor [MATCH pattern] [COUNT count]dump与restorekeys 通配符 示例演示 string说明setbit key offset valuegetbit key offsetsetrange key offset value List结构图相关命令lrem key count valueltrim key count value示例&#xff1a;使用 LTRIM…

图形学概述

图形学应用 游戏 游戏的画面好坏如何鉴定呢&#xff1f; 看游戏画面是否够亮&#xff1a;渲染中全局光照的好坏 《只狼》 为什么卡通游戏画面看起来是卡通的呢&#xff1f; 《无主之地3》 这些都是图形学需要着手解决的问题 电影 电影《黑客帝国》的特效也是通过计算机…

Python 全栈体系【四阶】(五十四)

第五章 深度学习 十二、光学字符识别&#xff08;OCR&#xff09; 3. 文字识别技术 3.1 CRNNCTC(2015) CRNN&#xff08;Convolutional Recurrent Neural Network&#xff09;即卷积递归神经网络&#xff0c;是DCNN和RNN的组合&#xff0c;专门用于识别图像中的序列式对象。…

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

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

[笔试强训day09]

文章目录 BC146 添加逗号DP2 跳台阶JZ61 扑克牌顺子解法一&#xff1a;排序模拟解法二&#xff1a;规律哈希 BC146 添加逗号 BC146 添加逗号 #include<iostream> #include<string>using namespace std;int main() {string s;cin>>s;string ans;for(int i0;i…

2024年上半年系统架构设计师——案例第二题——UML相关

这个只记到一个大概了 主题干&#xff0c;说明人员访客系统 题目1 9分 问序列图信息类型和特点 题目2 序列图填空 好像是10分吧 访客系统的序列图 题目3 6分 说明软件分析和设计时的和UML图有关原则&#xff1f;

揭秘爬虫技术:从请求到存储的全方位解析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、爬虫初探&#xff1a;请求与响应 二、数据解析&#xff1a;从混乱中提炼价值 三、数据…

微软发布多模态模型Phi-3-vision,仅4.2B,小模型大潜力

前言 在大型语言模型&#xff08;LLM&#xff09;领域&#xff0c;模型参数规模与性能之间一直存在着密切的联系。近年来&#xff0c;虽然参数规模不断攀升&#xff0c;但随之而来的训练成本和推理成本也成为了制约模型发展的瓶颈。为了打破这一困境&#xff0c;微软推出了 Ph…

Livox-SDK2 用vs2017编译

Livox-SDK2 Livox-SDK2代码去上面下载&#xff0c;文章中给出的是用vs2019进行编译的&#xff0c;生成项目时用的 > cmake .. -G "Visual Studio 16 2019" -A x64 但如果我想用vs2017进行编译&#xff0c;那么只需要将上面语句改为如下&#xff1a; cmake .. -…