Pandas中map apply applymap学习

Pandas中map apply applymap可以对DataFrame进行逐行、逐列和逐元素的操作。
依赖的数据集样例:

import pandas as pd
ex_data = pd.DataFrame({
    'class': ['A', 'A', 'B', 'C', 'B', 'B', 'C', 'A', 'B'], 
    'gender': ['男', '女', '女', '男', '女', '男', '男', '男', '男'], 
    'score_math': [95, 96, 85, 93, 84, 88, 59, 88, 89], 
    'score_music': [79, 90, 85, 92, 90, 70, 89, 86, 74]})

在这里插入图片描述

Series数据处理

1 map

将样例中gender列的男替换为1,女替换为0。

1.1 使用字典进行映射

ex_data['gender'] = ex_data['gender'].map({"男": 1, "女": 0})

在这里插入图片描述
如将gender列映射为英文表示:

gender_df = pd.DataFrame({
    'gender': ['男', '女'],
    'eng_gender': ['male', 'female']})

gender_dict = gender_df.set_index('gender')['eng_gender'].to_dict()
ex_data['gender'] = ex_data['gender'].map(gender_dict, na_action='ignore')

在这里插入图片描述

1.2 使用函数进行映射

def gender_map(x):
    gender = 1 if x == "男" else 0
    return gender

ex_data['gender'] = ex_data['gender'].map(gender_map)

在这里插入图片描述
不管用字典还是函数进行映射,map方法都是把对应的数据逐个当做参数传入字典或函数中,得到映射后的值。

2 apply

与map很类似,但是允许传入功能更为复杂的函数。传入map的函数只能接收一个参数,而apply支持多个参数。比如将数学课的乘积统一减去3分:

def score_math_sub(x, bias):
    return x + bias

# 以元组的方式传入额外的参数
ex_data['score_math'] = ex_data['score_math'].apply(score_math_sub, args=(-3,))

在这里插入图片描述

DataFrame数据处理

1 apply

比如对得分列进行取对数求和的操作:

print(ex_data[['score_math', 'score_music']].apply(np.sum, axis=0))
print(ex_data[['score_math', 'score_music']].apply(np.log, axis=0))

在这里插入图片描述
比如要求数学和音乐两门课的平均分:

def Avg_calculate(series):
    math_score = series["score_math"]
    math_music = series["score_music"]
    Avg_score= (math_score + math_music) / 2
    return Avg_score

ex_data['Avg_score'] = ex_data.apply(Avg_calculate, axis=1)

在这里插入图片描述

2 applymap

用法相对简单,会对DataFrame中的每个单元格执行指定函数的操作。
比如df中全部改为小写:

ex_numdata = ex_data[['class']]
ex_numdata = ex_numdata.applymap(lambda x: x.lower())
pandas中的applymapapplymap都是用于对DataFrame或Series中的数据进行函数应用的方法,它们的具体使用方式和作用略有不同。 1. apply方法 apply方法是用于对DataFrame或Series的行或列执行函数操作的方法。可以通过传递axis参数来指定是对行还是列进行操作,默认是对列进行操作。apply方法接受一个函数作为参数,并将该函数应用到DataFrame或Series的每一个元素上,然后将结果组合成一个新的DataFrame或Series。 示例: ``` import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} df = pd.DataFrame(data) def add_one(x): return x + 1 # 对每一列执行add_one函数 df.apply(add_one) # 对每一行执行add_one函数 df.apply(add_one, axis=1) ``` 2. map方法 map方法是用于对Series中的每一个元素执行函数操作的方法。它接受一个函数作为参数,并将该函数应用到Series的每一个元素上,然后将结果组合成一个新的Series。 示例: ``` import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} df = pd.DataFrame(data) def add_one(x): return x + 1 # 对Series A 中的每一个元素执行add_one函数 df['A'].map(add_one) ``` 3. applymap方法 applymap方法是用于对DataFrame中的每一个元素执行函数操作的方法。它接受一个函数作为参数,并将该函数应用到DataFrame的每一个元素上,然后将结果组合成一个新的DataFrame。 示例: ``` import pandas as pd data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]} df = pd.DataFrame(data) def add_one(x): return x + 1 # 对DataFrame中的每一个元素执行add_one函数 df.applymap(add_one) ``` 总结: apply方法适用于对DataFrame或Series的行或列执行函数操作;map方法适用于对Series中的每一个元素执行函数操作;applymap方法适用于对DataFrame中的每一个元素执行函数操作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值