【发布时间】:2012-02-17 23:42:04
【问题描述】:
我最近遇到了用于 python 的pandas 库,根据this benchmark,它执行非常快速的内存合并。它甚至比 R(我选择的分析语言)中的 data.table 包还要快。
为什么pandas 比data.table 快这么多?是因为 python 比 R 具有固有的速度优势,还是有一些我不知道的权衡?有没有办法在data.table 中执行内部和外部联接而不诉诸merge(X, Y, all=FALSE) 和merge(X, Y, all=TRUE)?
这是用于对各种包进行基准测试的R code 和Python code。
【问题讨论】:
-
@JoshuaUlrich:IIRC
data.table只是继承自data.frame,但它在底层依赖于 C 代码。 -
@Joshua “即使你在 C 中操作 data.frames 也很慢”是什么意思?那是相对于别的东西吗?慢什么?
-
@JoshuaUlrich 我刚刚注意到这条评论线索从未被搁置。所以澄清一下:
set()在讨论后不久被添加到data.table。与:=非常相似,但在循环时避免了[.data.table的小开销,因此与matrix一样快。因此,data.frame可以 像矩阵一样被操纵。基准是here。 -
我们能不能得到这个基准的更新版本,很明显这个基准实际上是一个边缘案例,现在已经修复了。鉴于我见过的所有基准测试都表明 data.table 更快,我想看看合并数是多少?
-
@statquant 我没有运行原始基准,但我真的很想看到 Wes 更新基准。
标签: python r join data.table pandas