优化python代码以从非常大的数据框中删除单词



我的目标是从大小为300万的数据框中删除生疏词。下面的代码花费了很长时间。有什么方法可以优化它吗?

rare_word=[]
for k,v in frequency_word.items():
if v<=1:
rare_word.append(k)
df['description']=df['description'].apply(lambda x:[i for i in x if i not in rare_word] )

由于rare_word非常大,表达式i not in rare_word将会很慢,因为它执行线性搜索. 您可以通过将rare_word转换为集合来加快速度。rare_word = set(rare_word)。由于散列, set不仅在常量时间内执行not in,它们还消除了对昂贵的字符串比较的需要(也是由于哈希)。您可以使用理解列表来更快地构建集合:

# Note the presence of the '{}'
rare_word = {k for k,v in frequency_word.items() if v<=1}

进一步优化代码可能是可能的,但如果没有关于数据框架的更多信息,很难说。至少这种优化应该会使代码的速度提高几个数量级。

相关内容

  • 没有找到相关文章

最新更新