Python(Pandas) 中map, applymap and apply的区别(记住作用对象:dataframe中的列,每一个元素,series每一个值)

1.apply()
当想让方程作用在一维的向量上时,可以使用apply来完成,如下所示

In [116]: frame = DataFrame(np.random.randn(4, 3), columns=list('bde'), index=['Utah', 'Ohio', 'Texas', 'Oregon'])

In [117]: frame
Out[117]: 
               b         d         e
Utah   -0.029638  1.081563  1.280300
Ohio    0.647747  0.831136 -1.549481
Texas   0.513416 -0.884417  0.195343
Oregon -0.485454 -0.477388 -0.309548

In [118]: f = lambda x: x.max() - x.min()

In [119]: frame.apply(f)
Out[119]: 
b    1.133201
d    1.965980
e    2.829781
dtype: float64

但是因为大多数的列表统计方程 (比如 sum 和 mean)是DataFrame的函数,所以apply很多时候不是必须的

2.applymap()
如果想让方程作用于DataFrame中的每一个元素,可以使用applymap().用法如下所示

In [120]: format = lambda x: '%.2f' % x

In [121]: frame.applymap(format)
Out[121]: 
            b      d      e
Utah    -0.03   1.08   1.28
Ohio     0.65   0.83  -1.55
Texas    0.51  -0.88   0.20
Oregon  -0.49  -0.48  -0.31
3.map()
map()只要是作用将函数作用于一个Series的每一个元素,用法如下所示

In [122]: frame['e'].map(format)
Out[122]: 
Utah       1.28
Ohio      -1.55
Texas      0.20
Oregon    -0.31
Name: e, dtype: object
总的来说就是apply()是一种让函数作用于列或者行操作,applymap()是一种让函数作用于DataFrame每一个元素的操作,而map是一种让函数作用于Series每一个元素的操作

在使用Pandas处理大型DataFrame时,mapapplyapplymap函数是数据映射和批量处理的关键工具。map函数通常用于Series对象,对其中的每个元素应用同一个映射规则;apply函数则可以用于DataFrame的每一行或每一,执行更为复杂的操作;applymap函数适用于DataFrame中的每个元素,包括数字、字符串和缺失。 参考资源链接:[Pandas高效数据处理:mapapplyapplymap函数详解](https://wenku.youkuaiyun.com/doc/19qi0f9abb?spm=1055.2569.3001.10343) 首先,推荐查阅《Pandas高效数据处理:mapapplyapplymap函数详解》,这本书详细介绍了这三个函数的使用方法和场景,适合希望通过实践提高数据处理效率的用户。 以一个简单的例子来说明如何使用map函数进行数据映射。假设我们有一个包含商品名称和价格的DataFrame,我们希望根据商品类别给价格添加特定的前缀: ```python import pandas as pd # 创建一个示例DataFrame data = pd.DataFrame({ 'Product': ['Keyboard', 'Mouse', 'Monitor', 'Webcam'], 'Category': ['Electronics', 'Electronics', 'Electronics', 'Computing'], 'Price': [110, 50, 130, 40] }) # 创建一个映射字典 category_to_prefix = { 'Electronics': 'E-', 'Computing': 'C-' } # 使用map函数添加前缀 data['Prefixed Price'] = data['Category'].map(category_to_prefix) + data['Price'].astype(str) print(data) ``` 在这个例子中,我们通过map函数将'Category'中的每个映射到相应的前缀,并与'Price'连接起来,从而实现了批量处理。map函数通过映射规则直接对Series中的每个元素进行操作,极大地提高了代码的执行效率和可读性。 如果需要进行更复杂的操作,比如根据多个来计算新apply函数将更适合。而applymap函数则适用于需要对DataFrame中的每个元素进行统一操作的情况,无论元素是数字、字符串还是缺失。 为了深入理解这些函数的使用,以及如何根据不同的数据结构和业务需求选择合适的函数,继续参考《Pandas高效数据处理:mapapplyapplymap函数详解》将会获得更多的实践技巧和深入理解。 参考资源链接:[Pandas高效数据处理:mapapplyapplymap函数详解](https://wenku.youkuaiyun.com/doc/19qi0f9abb?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值