Pandas数据分析基础—pandas自带函数map()/apply()/applymap()

文章目录

  • 前言
  • 一、Series数据处理
    • 1、map()方法
    • 2、apply()方法
    • 3、applymap()方法
    • 总结
  • 二、DataFrame数据处理
    • 1、map()方法
    • 2、apply()方法
    • 3、applymap()方法
    • 总结
  • 三、map、apply、applymap三个函数区别


前言

在进行数据处理时,经常会对一个DataFrame展开逐行、逐列、逐元素的操作,对应这些操作,常常使用Pandas中的map、apply和applymap三个函数进行处理。本文主要讲这三个函数在series、dataframe数据结构下应用情况及三个函数的区别。


模拟的样本数据

boolean=[True,False]
channel=["T","N"]
data=pd.DataFrame({"A":np.random.randint(150,190,10),"B":np.random.randint(40,90,10),"C":[boolean[x] for x in np.random.randint(0,2,10)],"D":[channel[x] for x in np.random.randint(0,2,10)]
}
)
data

在这里插入图片描述

一、Series数据处理

1、map()方法

  • 使用字典进行映射

举例:
要求:将D列中”N“换为0,”T“为1。

data['D']=data['D'].map({'N':0,'T':1})
data

在这里插入图片描述

  • 使用函数

举例:
要求:将D列中”N“换为0,”T“为1。

def func(values):if values=='N':return 0else:return 1data['D']=data['D'].map(func)
data

在这里插入图片描述

不管是利用字典还是函数进行映射,map方法都是把对应的数据逐个当作参数传入到字典或函数中,得到映射后的值。

2、apply()方法

  • 使用函数做映射

举例:
要求:将D列中”N“换为0,”T“为1。

def func(values):if values=='N':return 0else:return 1data['D']=data['D'].apply(func)
data

在这里插入图片描述

  • apply可以输入额外的参数
    可以给apply调用函数添加多个参数,在apply里加上args=,将其他参数组成一个元组代入函数中。注意:只有一个额外参数时需要写成这种形式:(‘额外参数1’,),加一个’,',代表是一个元组。

举例:
要求:将A列中所有数值减去100。

def func(values,x):return values+xdata['A']=data['A'].apply(func,args=(-100,))
data

在这里插入图片描述

  • 不可以用字典来做映射

举例:
要求:将D列中”N“换为0,”T“为1。

data['D']=data['D'].apply({'N':0,'T':1})
data

在这里插入图片描述

3、applymap()方法

  • series没有applymap函数。

总结

  • Series的map可以直接输入字典做关系映射,apply不行。
  • Series的apply可以输入函数之外的额外参数,map不行。
  • Series的apply和map都可以输入函数做数据处理。
  • Series没有applymap函数。
  • Series的apply是不能直接输入字典做关系映射,不是不能输入字典。

二、DataFrame数据处理

1、map()方法

  • DataFrame中没有map()方法

2、apply()方法

  • 对比Series的apply,DataFrame的apply多了一个核心参数axis:
    当axis=1时,对每行执行指定函数。
    当axis=0时,对每列执行指定函数。

举例1
要求:对比A、B两列,求每行最大值

import numpy as np 
data[['A','B']].apply(np.max,axis=1)

在这里插入图片描述
举例2
要求:求A、B两列的最大值

import numpy as np 
data[['A','B']].apply(np.max,axis=0)

在这里插入图片描述

3、applymap()方法

  • applymap会对DataFrame中每个单元格执行指定函数的操作

举例:
要求:将dataframe中所有的值保留两位小数显示,使用applymap可以很快达到你想要的目的

import pandas as pd
data = pd.DataFrame({"A":np.random.randn(5),"B":np.random.randn(5),"C":np.random.randn(5),"D":np.random.randn(5),"E":np.random.randn(5),}
)
data data .applymap(lambda x:"%.2f" % x)

在这里插入图片描述
在这里插入图片描述

总结

  • DataFrame没有map函数。
  • DataFrame的apply是对行(可以单行也可以多行)或列(可以单列也可以多列)执行指定函数的操作,有axis参数,当axis=1,对每行执行指定函数,当axIs=0时,对每列执行指定函数。
  • DataFrame中applymap会对每个单元格执行指定函数的操作。

三、map、apply、applymap三个函数区别

  • map:应用在单独一个Series的每个元素中,只针对单列。

  • apply:应用在DataFrame的行或列中,也可以应用到单独一个Series的每个元素中,针对多列,也可以单列。

  • applymap:应用在DataFrame的每个元素中。针对DataFrame全部元素。apply想要直接对每个元素进行操作,得单独取出serires才可以实现,不能直接在整个DataFrame上执行。


参考文章:

https://zhuanlan.zhihu.com/p/100064394
https://zhuanlan.zhihu.com/p/133722455
https://zhuanlan.zhihu.com/p/584036056

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

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

相关文章

【AI】机器学习——绪论

文章目录 1.1 机器学习概念1.1.1 定义统计机器学习与数据挖掘区别机器学习前提 1.1.2 术语1.1.3 特点以数据为研究对象目标方法——基于数据构建模型SML三要素SML步骤 1.2 分类1.2.1 参数化/非参数化方法1.2.2 按算法分类1.2.3 按模型分类概率模型非概率模型逻辑斯蒂回归 1.2.4…

redis 数据结构(二)

整数集合 整数集合是 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素,并且元素数量不时,就会使用整数集这个数据结构作为底层实现。 整数集合结构设计 整数集合本质上是一块连续内存空间,它的结构定义如下: typed…

避雷,软件测试常见的误区之一

随着软件规模的不断扩大,软件设计的复杂程度不断提高,软件开发中出现错误或缺陷的机会越来越多。同时,市场对软件质量重要性的认识逐渐增强。所以,软件测试在软件项目实施过程中的重要性日益突出。但是,现实情况是&…

喜讯 | 数智经营新典范,体验家XMPlus荣获「年度数智经营服务商」

7月27日,“助力运营知识与创新传播”的内容服务平台——运营研究社举行了「2023数字化运营生态大会」,会上正式揭晓了「2023数字化运营生态大奖」的四大榜单,体验家XMPlus荣获「年度数智经营服务商」!现场有800运营伙伴齐聚&#…

python 笔记(3)——request、爬虫、socket、多线程

目录 1、使用requests发送http请求 1-1)发送get请求 1-2)发送 post 请求 1-3)发送 get 请求下载网络图片 1-4)使用 post 上传文件 1-5)自动维护 session 的方式 2、使用 os.popen 执行cmd命令 3、基于 beautif…

【微服务部署】五、Jenkins+Docker一键打包部署NodeJS(Vue)项目的Docker镜像步骤详解

NodeJS(Vue)项目也可以通过打包成Docker镜像的方式进行部署,原理是先将项目打包成静态页面,然后再将静态页面直接copy到Nginx镜像中运行。 一、服务器环境配置 前面说明了服务器Nginx的安装和配置,这里稍微有些不同&a…

mysql Index

创建索引 方法1 create table 表( col1 int, col2 int, … index | key index_name (列名) 方法2 alter table 表名 ADD index alter table student_table add index index_name(stu_id); 方法3 create index index_name on 表名(列) 删除索引 方式1 alter table xx drop prima…

革命性的电子元件:RAD继电器 | 百能云芯

在现代电子和通信系统中,RAD继电器是一种关键的电子元件,它在各种应用中发挥着重要作用。RAD继电器(Reed-relay Actuated Device)是一种基于磁性原理的电子开关,其特点是极其高速、可靠、低功耗和长寿命。下面云芯将为…

案例分享:西河水库安全监测信息化系统实施方案

一、项目概述1.1项目背景西河水库信息化工作已开展多年,但是由于西河水库监测设备都已经老化或者损坏,现有设备已渐渐不能满足新时期西河水库信息化和现代化发展需求。因此,灌区管理局拟在运用现代信息和通信技术手段感测、分析、整合水库运行…

el-date-picker自定义只能选中当前月份和半年内月份等

需求:el-date-picker只能选中当前月期和当前月期往前半年,其他时间就禁用了不让选择了,因为没数据哈哈。当然也可以选择往前一年等。 一、效果 二、写个日期选择器 :picker-options:日期选项 value-format:选择后的格…

设计模式-工厂模式Factory

工厂模式 b.工厂方法模式 (Factory Method) (重点)1) 简单工厂 Simple Factory1.a) 简单工厂的好处 2) 工厂方法 Factory Method2.a) 对工厂进行抽象化 (版本一)2.b) 对工厂进行缓存 (版本二)2.c) 加载配置文件到缓存中 (版本三)c.1) 产品线 c.抽象工厂模式 (Abstract Factory)…

SQL-DQL

-----分组查询----- 1.语法: SELECT 字段列表 FROM 表名 [WHERE 条件 ] GROUP BY 分组字段名 [HAVING 分组后过滤条件]; 2.where与having区别 》执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组&…

【Flutter】Flutter 使用 qr_flutter 实现QR码二维码生成与渲染

【Flutter】Flutter 使用 qr_flutter 实现QR码二维码生成与渲染 文章目录 一、前言二、qr_flutter 包简介三、安装与配置四、基本使用五、高级功能与自定义六、完整实际业务代码示例七、总结 一、前言 亲爱的 Flutter 初学者,你好!今天我要与你分享一个…

【黑马头条之项目部署_持续集成Jenkins】

本笔记内容为黑马头条项目的项目部署_持续集成部分 目录 一、内容介绍 1、什么是持续集成 2、持续集成的好处 3、今日内容 二、软件开发模式 1、软件开发生命周期 2、软件开发瀑布模型 3、软件的敏捷开发 三、Jenkins安装配置 1、Jenkins介绍 2、Jenkins环境搭建 …

OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理

前言:在部分大厂笔试时经常会使用OJ题目,这里对《华为机试》和《剑指offer》中的部分题目进行思路分析和讲解,希望对各位读者有所帮助。 题目来自牛客网,欢迎各位积极挑战: HJ73:计算日期到天数转换_牛客网 JZ17:打印…

【【STM32-29正点原子版本串口发送传输实验】

STM32-29正点原子版本串口发送传输实验 通过串口接收或发送一个字符 例程目的 开发板上我们接入的是实现异步通信的UART接口 USB转串口原理图 我们一步步分析 PA9是串口1 的发送引脚 PA10是串口1 的接受引脚 。因为我们现在只是用到异步收发器功能,所以我们现…

qt中子窗口最小化后再恢复显示窗口区域显示为全白色

问题: qt中子窗口最小化后再恢复显示窗口区域显示为全白色,如下图: 原因: 恢复显示后窗口为及时刷新。 解决办法: 重写showEvent函数,如下: void MyClass::showEvent(QShowEvent *event) {se…

大模型 Dalle2 学习三部曲(二)clip学习

clip论文比较长48页,但是clip模型本身又比较简单,效果又奇好,正所谓大道至简,我们来学习一下clip论文中的一些技巧,可以让我们快速加深对clip模型的理解,以及大模型对推荐带来革命性的变化。 clip结构 首选…

Mybatis 动态SQL – 使用choose标签动态生成条件语句

之前我们介绍了if,where标签的使用;本篇我们需要在if,where标签的基础上介绍如何使用Mybatis提供的choose标签动态生成条件语句。 如果您对if,where标签动态生成条件语句不太了解,建议您先进行了解后再阅读本篇,可以参考: Mybat…

CSS中如何实现文字描边效果(Text Stroke)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 文字描边效果(Text Stroke)⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个…