数据处理赏罚必看:怎样让你的Pandas轮回加速71803倍
副问题[/!--empirenews.page--]
雷锋网 AI 开拓者按,假如你行使 python 和 pandas 举办数据说明,那么不久你就会第一次行使轮回了。然而,纵然是对小型数据集,行使尺度轮回也很费时,你很快就会心识到大型数据帧也许必要很长的时刻。当我第一次等了半个多小时来执行代码时,我找到了接下来想与你共享的更换方案。 尺度轮回数据帧是具有行和列的 pandas 工具。假如行使轮回,则将遍历整个工具。python 不能用任何内置函数,并且速率很是慢。在我们的示例中,我们获得了一个具有 65 列和 1140 行的数据帧,它包括 2016-2019 赛季的足球角逐功效。我们要建设一个新的列来指示某个特定的队是否打过平手。我们可以这样开始:
由于我们的数据框架中包括了英超的每一场角逐,以是我们必需搜查我们感乐趣的球队(阿森纳)是否介入过角逐,是否合用,他们是主队照旧客队。如你所见,这个轮回很是慢,必要 207 秒才气执行。让我们看看怎样进步服从。 pandas 内置函数:iterrow()——快 321 倍在第一个示例中,我们轮回会见了整个数据帧。iterrows()为每行返回一个序列,因此它以一对索引的情势在数据帧上迭代,而感乐趣的列以序列的情势迭代。这使得它比尺度轮回更快:
代码运行必要 68 毫秒,比尺度轮回快 321 倍。可是,很多人提议不要行使它,由于如故有更快的要领,而且 iterrows() 不保存跨行的数据范例。这意味着,假如在数据帧上行使 iterrow(),则可以变动数据范例,这会导致许多题目。要保存数据范例,还可以行使 itertuples()。我们不会在这里具体接头,由于我们要存眷服从。你可以在这里找到官方文件: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.itertuples.html?source=post_page-----805030df4f06---------------------- apply()要领——快 811 倍apply 自己并不快,但与数据帧团结行使时具有上风。这取决于应用表达式的内容。假如可以在 Cython 空间中执行,则速率会更快(在这里就是这种环境)。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |