数据转换的三剑客:Pandas 中 apply、map 和 applymap 方法的应用指南

数据转换的三剑客:Pandas 中 apply、map 和 applymap 方法的应用指南

​ 在 Pandas 中,applymapapplymap 是常用的数据转换和处理方法,它们为数据分析和数据处理提供了灵活的功能。这些方法可以根据具体的需求选择合适的方法进行操作。

apply:

apply 方法是 Pandas 中最常用的方法之一。它可用于在 DataFrame 或 Series 的上应用函数。apply 方法接受一个函数作为参数,并将该函数应用于指定的轴或维度。返回值是一个新的 Series 或 DataFrame 对象,其中包含应用函数后的结果。

import pandas as pd

def square(x):
    return x ** 2

# 创建一个示例 DataFrame
data = {'A': [1, 2, 3],
        'B': [4, 5, 6]}
df = pd.DataFrame(data)
print(df)
# 应用自定义函数到列
df['A'] = df['A'].apply(square)
print(df)

在这里插入图片描述

当然,对于这种简单的语句,我们可以直接使用lamba表达式来代替。

如下:

import pandas as pd

# 创建一个示例 DataFrame
data = {'A': [1, 2, 3],
        'B': [4, 5, 6]}
df = pd.DataFrame(data)
print(df)
# 应用自定义函数到列
df['A'] = df['A'].apply(lambda x: x ** 2)
# x相当于这一列中的每一个元素,对每一个元素都平方
print(df)

map:

map 方法用于在 Series 对象上应用函数或字典映射。它将函数或映射应用于 Series 中的每个元素,并返回一个新的 Series 对象,其中包含映射后的结果。

import pandas as pd

# 创建一个示例 Series
data = pd.Series([1, 2, 3])

# 应用字典映射到元素
result = data.map({1: 'A', 2: 'B', 3: 'C'})
print(result)

在这里插入图片描述

applymap:

applymap 方法用于在 DataFrame 中的每个元素上应用函数。它将函数应用于 DataFrame 的每个元素,并返回一个新的 DataFrame 对象,其中包含应用函数后的结果。

import pandas as pd

def square(x):
    return x ** 2

# 创建一个示例 DataFrame
data = {'A': [1, 2, 3],
        'B': [4, 5, 6]}
df = pd.DataFrame(data)

# 应用自定义函数到每个元素
result = df.applymap(square)
print(result)

在这里插入图片描述

综合案例:

假设有一个包含学生信息的 DataFrame,其中包括学生姓名、年龄和成绩。现在需要进行以下操作:

  1. 将学生姓名的首字母大写。
  2. 根据不同年龄段给学生打上标签(如 “青少年”、“年轻人”、“成年人”)。
  3. 将成绩大于等于 90 的学生标记为 “优秀”,成绩大于等于 80 且小于 90 的学生标记为 “良好”,其他学生标记为 “一般”。

在这里插入图片描述

import pandas as pd

# 创建示例数据
data = {'姓名': ['nike', 'mike', 'wangwu'],
        '年龄': [20, 25, 30],
        '成绩': [85, 92, 78]}
df = pd.DataFrame(data)

# 1. 将学生姓名的首字母大写
df['姓名'] = df['姓名'].apply(lambda x: x.capitalize())

# 2. 根据年龄段给学生打上标签
age_labels = {20: '青少年', 25: '年轻人', 30: '成年人'}
df['年龄段'] = df['年龄'].map(age_labels)
# 3. 根据成绩给学生打上标签
def grade_label(score):
    if score >= 90:
        return '优秀'
    elif score >= 80:
        return '良好'
    else:
        return '一般'
df['成绩标签'] = df['成绩'].apply(grade_label)

print(df)

在这里插入图片描述

  • apply 方法:通过 apply 方法将 lambda 函数应用于学生姓名的每个值,使其首字母大写。
  • map 方法:利用 map 方法根据年龄字典将年龄映射为对应的年龄段标签。
  • apply 方法:通过 apply 方法将自定义函数 grade_label 应用于学生成绩的每个值,生成成绩标签。

总结:

apply 方法适用于 DataFrame 和 Series 对象,可以将自定义函数应用于行或列,实现元素级别的转换和处理。

map 方法适用于 Series 对象,用于对每个元素进行映射操作,可以使用函数、字典或其他 Series 对象进行映射。

applymap 方法适用于 DataFrame 对象,用于对每个元素进行元素级别的转换和处理。

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

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

相关文章

如何使用ModuleShifting测试Module Stomping和Module Overloading注入技术

关于ModuleShifting ModuleShifting是一款针对Module Stomping和Module Overloading注入技术的安全测试工具,该工具基于Python ctypes实现其功能,因此可以通过Python解释器或Pyramid在内存中完整执行,这样就可以避免使用编译加载器了。 需要…

普中STM32-PZ6806L开发板(HAL库函数实现-按键扫描)

简介 实现按键扫描, 实现四个按键按下控制灯的亮灭 电路原理图 按键电路原理图 按键与主芯片引脚原理图 其他知识 原理图分析 Key_UP按下会有高电平输入, 所以电路设置应该是默认低电平, 初始化为下拉输入 Key_Left/Right/Down按下会有低电平, 初始化为下拉输…

鸿蒙开发 - 认证账号

注册成功后,进行账号认证 认证成功后就可以进行开发了

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项样题卷②

2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项(高职组) 样题(第2套) 目录 2023年“中银杯”四川省职业院校技能大赛“云计算应用”赛项(高职组) 样题(第2套) 模块…

【pandas_不重复项计数】

听说WPS没有非重复项计数的功能,而office需要添加到数据模型之后,才可以使用该功能。而用pandas,既可以对重复项计数,又可以对非重复项计数。 # 使用提醒: # 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能 # 2. pack…

【C++】手撕 Vector类

目录 1,vector类框架 2,vector () 3,pinrt() 4,vector(int n, const T& value T()) 5,vector(const vector& v) 6,vector(InputIterator first, InputIterator last) 7,~vector…

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850

20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850 2023/12/28 12:30 开发板:Firefly的AIO-3399J【RK3399】 SDK:rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBr…

uni-app 前后端调用实例 基于Springboot

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

怎么解决 Nginx反向代理加载速度慢?

Nginx反向代理加载速度慢可能由多种原因引起,以下是一些可能的解决方法: 1,网络延迟: 检查目标服务器的网络状况,确保其网络连接正常。如果目标服务器位于不同的地理位置,可能会有较大的网络延迟。考虑使用…

win10系统请将eNSP相关应用程序添加到windows firewall的允许程序列表,并允许其在公用网络上运行!的解决办法

很多学习网络的小伙伴,在下载安装eNSP后,打开程序跳出:请将eNSP相关应用程序添加到windows firewall的允许程序列表,并允许其在公用网络上运行! 是不是挺闹心的! 其实,原因是很简单,就是win10系统防火墙访…

本地git服务器的使用

Windows上使用: 首先要在windows开发机上生成密钥: 1.安装git,首先去git官网下载git,https://git-scm.com/downloads,下载.exe格式并安装。 2.从程序目录启动“Git Bash” 3.键入命令:ssh-keygen -t rsa -…

快速上手:探索Spring MVC的学习秘籍!

SpringMVC概述 1,SpringMVC入门案例1.2 案例制作步骤1:创建Maven项目步骤2:补全目录结构步骤3:导入jar包步骤4:创建配置类步骤5:创建Controller类步骤6:使用配置类替换web.xml步骤7:配置Tomcat环境步骤8:启动运行项目步骤9:浏览器访问步骤10:修改Controller返回值解…

YOLOv8主干改进 更换柱状神经网络RevCol

一、Reversible Column Networks论文 论文地址:2212.11696.pdf (arxiv.org) 二、Reversible Column Networks结构 Reversible Column Networks 是一种用于量子计算的新型结构。它由一系列可逆操作组成,可以在量子计算中进行高效的信息传递和处理,具有可扩展性、灵活性、…

HTML教程(2)——基础标签

一、HTML的元数据 <meta>标签定义关于 HTML 文档的元数据。元数据是关于数据的数据&#xff08;信息&#xff09;,其始终位于<html>元素内&#xff0c;通常用于指定字符集、页面描述、关键词、文档作者和视口设置&#xff1b; 元数据不会显示在页面上&#xff0c…

回顾2023在CSDN的足迹与2024展望

目录 一、关于博主 二、2023的历程 1、博客分类 2、年度创作数据 3、解锁勋章 4、主要的方向 二、技术感悟 1、技术深入 2、还是实践 三、展望2024 今天是2024年的第一天&#xff0c;告别2023年&#xff0c;让我们以全新的姿态&#xff0c;去迎接新的一年的挑战。2023年…

尝试读取挪威 3d radar数据

1 原因 挪威的三维探地雷达很有特色&#xff0c;步进频率采样&#xff0c;与传统的GPR很不同&#xff0c;一个天线就拥有N个天线的功能。很想看看他们采集的数据是否清晰。 之前浙大学报审稿审到华南理工用的他们这个雷达。 图像来自知乎&#xff1a;若侵权&#xff0c;请告…

Windows反调试技术学习

Windows反调试 前言元旦快乐&#xff01;&#xff01;&#xff01;通过 API 调用IsDebuggerPresentCheckRemoteDebuggerPresent&#xff08;NtQueryInformationProcess&#xff09;OutputDebugStringZwSetInformationThread&#xff08;ThreadHideFromDebugger&#xff09; 手动…

【华为机试】2023年真题B卷(python)-喊七的次数重排

一、题目 题目描述&#xff1a; 喊7是一个传统的聚会游戏&#xff0c;N个人围成一圈&#xff0c;按顺时针从1到N编号。 编号为1的人从1开始喊数&#xff0c;下一个人喊的数字为上一个人的数字加1&#xff0c;但是当将要喊出来的数字是7的倍数或者数字本身含有7的话&#xff0c;…

windows无命令升级降级node版本

1. node最新版本下载链接 点击最新下载链接&#xff0c;找到对应版本下载并解压 2. 通过命令where node找到node.exe位置 3. 将该位置的node.exe替换为下载解压的最新node.exe 4. 重新执行node -v查看版本 --------------------------------------------------------------…

ETLCloud X 明道云实现无缝数据连接

明道云作为一款云端协作工具&#xff0c;为企业提供高效的沟通、协作和数据分析服务。它可以实现企业内部沟通和协作的高效性和一体化&#xff0c;并提供数据分析功能&#xff0c;让企业能够更好地理解业务和决策。 一、传统方式同步数据的痛点 传统方式同步数据需要手动进行…