如何提升Pandas速度,以毫秒级处理1000万行的数据集

提升Pandas速度,处理1000万行数据集的毫秒级方法

按照Pandas的本意使用它

我用Midjourney的图片

介绍

“太好了…又一篇关于如何使Pandas运行n倍更快的文章。”

在我使用Pandas的过去三年中,我想我已经说过无数次这句话了。我最近看到的一篇文章说,“使Pandas快71,803倍”。

但我不会给你那种承诺。我只会向你展示如何以最快的方式使用Pandas。因为你无法加快已经很快的东西。

这不是很有道理吗?

让我问你一下。当我说“触摸你的右耳朵”时,你会用哪只手?当然是右手。你不会把左手放在头上触摸右耳朵。那样会很奇怪。

嗯,使用Pandas文档明确标注为的函数而不是最快方法也会很奇怪。

这就是为什么本文将向您展示Pandas中一些常见数据操作的最佳实践。你甚至可以把这些最佳实践视为“常识”,因为这是Pandas维护者打算使用他们的库的方式。

高效索引

让我们从最基本的操作开始。具体来说,我们将看到选择行和列的最快方法。正如您所知,Pandas有两个索引操作符——lociloc。尽管对于小数据集它们的差异不太重要,但随着数据大小的增加,它们将变得非常明显。

首先,对于选择一行或多行,iloc更快。

相反,loc最适合选择带有标签的列:

>>> tps.loc[:, ["f1", "f2", "f3"]]

对于抽样列或行,内置的sample函数是最快的。你可能会认为使用NumPy的随机索引进行抽样…