数据转换的三剑客: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 对象,用于对每个元素进行元素级别的转换和处理。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acmakb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值