python数据分析——apply 2

news2024/11/18 11:42:38

参考资料:活用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)

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

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

相关文章

[数智人文实战] 02.舆情分析之词云可视化、文本聚类和LDA主题模型文本挖掘

【数智人文与文本挖掘】知识星球建立且正式运营,欢迎新老博友和朋友加入,一起分享更多数智人文知识和交流进步。该星球计划每周至少分享7个资源或文章,包括数智人文、文本挖掘、人工智能、大数据分析和图书情报的技术文章、代码及资源。同时,欢迎进入星球的朋友咨询我图情和…

技术面‍:前端代码是如何与服务器交互的

前言: 本篇文章主要是想讲解 .html 文件和 .CSS 文件在实际开发中和后端服务器交互最后上线的基础原理。 面向的人群🆕:是刚入行不久,且目前只会写前端业务代码而不清楚整个工作流的前端新人。我会从 0 开始一步一步带你理解整个…

内网安全--隧道技术-CS上线本地

免责声明:本文仅做技术交流与学习...请勿非法搞破坏... ---隧道技术:硬刚网络协议,(你不让我走我偏走!) 解决不出网协议上线的问题(利用出网协议进行封装出网) 代理协议: SOCKS4/5 代理软件: SocksCap Proxifier ProxyChains(…

Spring Boot 统一数据返回格式

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

Mybatis——入门

新建 idea 准备 数据库 create table user(id int unsigned primary key auto_increment comment ID,name varchar(100) comment 姓名,age tinyint unsigned comment 年龄,gender tinyint unsigned comment 性别, 1:男, 2:女,phone varchar(11) comment 手机号 ) comment 用…

文刻创作ai工具官网免费工具

文刻创作ai工具官网免费工具 Docshttps://iimenvrieak.feishu.cn/docx/O0UedptjbonN4UxyEy7cPlZknYc 文刻是一种可以帮助用户进行创作的AI工具。 它使用自然语言处理和机器学习技术,可以生成文章、故事、诗歌等文本内容。 用户可以通过输入一些关键词或指定一定的…

APM2.8用USB在线下载固件

1.把APM飞控用安卓手机的USB线插入电脑。 选择COM口,不要选择auto,如果你没有COM口说明你驱动安装有问题。 波特率115200。点击相应的图标就可以下载固件到飞控板。 请注意:烧录APM必须选择INSTALL FIRMWARE LEAGACY,第一个是用于刷pixhawk的…

每天写两道(一):无重复字符的最长子串、反转链表

3. 无重复字符的最长子串 3. 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。(1)滑动窗口 双…

QGraphicsView实现简易地图17『涟漪效果』

前文链接:QGraphicsView实现简易地图16『爆炸效果』 模仿水波荡漾时的涟漪效果,参考了echarts中的散点图 支持设置散点大小、颜色、涟漪线条宽度。 动态演示效果 静态展示图片 核心代码 #pragma once #include "../AbstractGeoItem.h" #incl…

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

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

md是什么?如何打开md类型的文件?假如使用Typora打开,如何免费激活Typora?

md是什么?如何打开md类型的文件 前言一、md是什么简介常见打开md类型文件的方法使用文本编辑器使用专用Markdown编辑器使用在线Markdown编辑器在浏览器中安装插件打开 二、下载安装Typora三、免费激活Typora激活Typora关闭软件每次启动时的已激活弹窗去除软件左下角…

uniapp 安卓 Pc端真机浏览器调试

下载插件:真机模拟浏览器 1. 安装, 每次启用时使用usb 线连接电脑, 并且打开手机或者POS (调试设备)开发者模式, 比如我的是pos 机 则在系统设置中找到版本号,点击多次就会触发开发者模式 2.打开真机模拟软件,打开后会打开一个浏览器,如果想要模拟google的浏览器则 在浏览器地…

【Mybatis】映射文件获取新增记录的id

我们在讲JDBC的时候讲过在插入新数据值的时候需要获得到自动生成的那个主键id的值 ①获取PreparedStatement的对象的时候 PreparedStatement st conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS ); ②在执行SQL语句后 st.executeUpdate();ResultSet rs st.ge…

git的使用之筛选文件上传到远程服务器仓库

.gitignore 让本地文件有选择上传到远程服务器仓库 下面是linux内核的.gitignore # # NOTE! Dont add files that are generated in specific # subdirectories here. Add them in the ".gitignore" file # in that subdirectory instead. # # NOTE! Please use gi…

Antd Vue项目引入TailwindCss之后出现svg icon下移,布局中的问题解决方案

目录 1. 现象: 2. 原因分析: 3. 解决方案: 写法一:扩展Preflight 写法二: 4. 禁用 Preflight 1. 现象: Antd Vue项目引入TailwindCss之后出现svg icon下移,不能对齐显示的情况&#xff0…

怎么把3d模型旋转加复制---模大狮

在进行3D建模和设计过程中,经常需要对3D模型进行旋转和复制操作,这是设计过程中的常见需求。本文将介绍如何对3D模型进行旋转和复制,帮助读者更好地掌握这一重要的操作技巧。 一、旋转3D模型 在大多数3D建模软件中,旋转3D模型通常…

《java数据结构》--顺序表详解

一.顺序表的概念🙉 🐱顺序表是一段物理地址连续的储存单元,一次储存数据元素的线性结构。一般情况下采用数组储存,和数组的增删查改类似。 但是顺序表和数组还是有区别的比如,数组按照是否可以扩容可以分为&#xff…

VTK 数据处理:几何操作

VTK 数据处理:几何操作 VTK 数据处理:几何操作实例 1:使用 vtkWarpTo 向指定点发生位移实例 2:使用 vtkWarpVector 按照指定向量发生位移实例 3:使用 vtkDeformPointSet 按照框架变形 VTK 数据处理:几何操作…

系统思考—战略沙盘推演咨询服务

今日与JSTO团队一起学习了《战略沙盘推演咨询服务》。通过沙盘体验,我深刻感受到组织与战略就像一张皮的正反两面。在转型过程中,即使战略非常明确,团队成员由于恐惧和顾虑,往往不愿意挑战新的业务,从而难以实现战略目…

PHP框架 Laravel

现在因为公司需求,需要新开一个Laravel框架的项目,毫无疑问,我又被借调过去了,最近老是被借调,有点阴郁,不过反观来看,这也是好事,又可以复习和巩固一下自己的知识点,接下…