赞
踩
一、apply 效率低,可以优化的方法
用pandas处理数据时,常需要用到apply方法对某列或者某几列数据进行处理。apply方法便捷易懂,但随着处理数据量的增加以及处理函数的复杂度增加,apply所需要的耗时也会增加。
常见的两种方式:
1、矢量化操作,它是在Pandas中做事的最快方法,且优先考虑内置函数。如下图的pandas vectorization
直接通过列名进行操作,例如进行计算、生成布尔值、字符串操作等。
- df['sum'] = df.sum()
- df['bool'] = df['c'].isnull.any(axis=1)
- df['result'] = df['d'].str.lower()
假如原本apply应用的函数,存在不同情况不同的处理方式时,可以使用切片操作将数据按照情况切分,然后分开处理数据,最后再合并。
- df.loc[:5, 'result'] = df.loc[:5, 'd'] + 'begin'
- df.loc[5:, 'result'] = df.loc[5:, 'd'] + 'end'
2、将Pandas的数据转化为Numpy的Array,然后使用Numpy的内置函数进行向量化操作。如下图的numpy vectorization
df['sum'] = np.sum(df.values)
下图是有个工程师做的各个方法的耗时对比。常用的apply方法指的是图中的方法 lambda Function
当然还有其他的方式,且可以根据业务逻辑去发现更多的技巧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。