上一篇文章加速Pandas计算:优化数据处理性能的技巧与技术(numba) - 掘金 (juejin.cn) 我们学习了如何使用numba来加速Pandas的计算。下面我们继续分享数据清洗的加速方法(二):
这是来自天池的淘宝用户数据分享。当我们想把它的时间time拆分成year,mouth,day,hour四部分时。常见的方法可以通过匿名函数来划分,代码如下:
cleaned_data['year'] = cleaned_data['time'].apply(lambda x: x.strftime('%Y'))
cleaned_data['month'] = cleaned_data['time'].apply(lambda x: x.strftime('%m'))
cleaned_data['date'] = cleaned_data['time'].apply(lambda x: x.strftime('%d'))
cleaned_data['hour'] = cleaned_data['time'].apply(lambda x: x.strftime('%H'))
可以划分但是它划分比较费时。
下面我将分享Pandas 提供的内置方法进行操作。通过使用 .dt 属性和相应的方法,将它拆分成year,mouth,day,hour四部分。代码如下:
cleaned_data['year'] = cleaned_data['time'].dt.year
cleaned_data['month'] = cleaned_data['time'].dt.month
cleaned_data['date'] = cleaned_data['time'].dt.day
cleaned_data['hour'] = cleaned_data['time'].dt.hour
这样可以快速的划分时间。
还有一个当我们想查看数据是否重复时,常见的方法是使用duplicated(),当数据量非常大的时候,也非常费时。
代码如下:
original_data.duplicated(['user_id','item_id','behavior_type','user_geohash','item_category','time'])
使用上次学习的numba可以加速数据处理,代码如下:
import numba as nb
@nb.jit(nopython=True)
def check_duplicates(data, columns):
return data.duplicated(columns)
original_data.duplicated(['user_id','item_id','behavior_type','user_geohash','item_category','time'])
这样就能够加速数据的处理了,今天的分享就到这了。