下面是对 "pandas map(), apply(), applymap() 区别解析" 的详细讲解:
1. pandas map(), apply() 和 applymap() 的基本说明
这三个函数都是 pandas 中常用的数据处理函数,它们的主要区别在于:
map()
函数是用于对 pandas 中的 Series 进行元素级传递, 对于 DataFrame 不适用。apply()
函数是用于对 pandas 中的 Series 和 DataFrame 进行行或者列级传递,是一种比较通用的数据处理方式。applymap()
函数是用于对 pandas 中的 DataFrame 中的所有元素进行元素级传递,进一步加强了对数据的处理方式。
2. pandas map()函数的使用示例
pandas map()
函数是只对序列进行操作的,使用方法如下:
import pandas as pd
data = pd.DataFrame({'score': [99.0, 89.0, 95.0, 82.0], 'class_rank': ['1st', '2nd', '1st', '3rd']})
# 定义map函数
def map_rank(rank_str):
rank_str = rank_str.lower()
if rank_str == '1st':
return 'A'
elif rank_str == '2nd':
return 'B'
else:
return 'C'
data['class_rank'] = data['class_rank'].map(map_rank)
print(data)
上述代码中,我们将 class_rank 列中的排名字符串转换为大写字母,并且将排名为 1st 的学生转换为 'A',将排名为 2nd 的学生转换为 'B',其余转换为 'C'。
结果会输出:
score class_rank
0 99.0 A
1 89.0 B
2 95.0 A
3 82.0 C
3. pandas apply()函数的使用示例
pandas apply()
函数是对数据的行或者列进行操作的。使用方法如下:
import pandas as pd
data = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 8, 9]
})
# 对每一行应用函数,获得每一行的和
data['row_sum'] = data.apply(lambda x: x.sum(), axis=1)
# 对每一列应用函数,获得每一列的和
data.loc['col_sum'] = data.apply(lambda x: x.sum(), axis=0)
print(data)
上述代码中,我们分别对每一行和每一列分别应用了 lambda 函数,对应求和操作。
结果会输出:
A B C row_sum
0 1 4 7 12
1 2 5 8 15
2 3 6 9 18
col_sum 6 15 24 45
4. pandas applymap()函数的使用示例
pandas applymap()
函数是对每一个元素进行处理的,使用方法如下:
import pandas as pd
data = pd.DataFrame([[1.234, 2.345], [3.456, 4.567]])
data = data.applymap(lambda x: round(x, 2))
print(data)
上述代码中,我们对 data 里的每一个元素都进行了一个 round 操作,使得浮点数只保留两位小数。
结果会输出:
0 1
0 1.23 2.35
1 3.46 4.57
5. 总结
以上就是 pandas 中三个比较常用的数据处理函数 map(), apply() 和 applymap() 的区别和示例。一般情况下,我们需要自己判断我们的数据需要使用哪一个函数,或者配合使用来完成操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas map(),apply(),applymap()区别解析 - Python技术站