如何提升Pandas速度,以毫秒级处理1000万行的数据集
提升Pandas速度,处理1000万行数据集的毫秒级方法
按照Pandas的本意使用它

介绍
“太好了…又一篇关于如何使Pandas运行n倍更快的文章。”
在我使用Pandas的过去三年中,我想我已经说过无数次这句话了。我最近看到的一篇文章说,“使Pandas快71,803倍”。
但我不会给你那种承诺。我只会向你展示如何以最快的方式使用Pandas。因为你无法加快已经很快的东西。
这不是很有道理吗?
让我问你一下。当我说“触摸你的右耳朵”时,你会用哪只手?当然是右手。你不会把左手放在头上触摸右耳朵。那样会很奇怪。
嗯,使用Pandas文档明确标注为慢的函数而不是最快方法也会很奇怪。
这就是为什么本文将向您展示Pandas中一些常见数据操作的最佳实践。你甚至可以把这些最佳实践视为“常识”,因为这是Pandas维护者打算使用他们的库的方式。
高效索引
让我们从最基本的操作开始。具体来说,我们将看到选择行和列的最快方法。正如您所知,Pandas有两个索引操作符——loc
和iloc
。尽管对于小数据集它们的差异不太重要,但随着数据大小的增加,它们将变得非常明显。
首先,对于选择一行或多行,iloc
更快。
相反,loc
最适合选择带有标签的列:
>>> tps.loc[:, ["f1", "f2", "f3"]]
对于抽样列或行,内置的sample
函数是最快的。你可能会认为使用NumPy的随机索引进行抽样…