为什么pandas在python中的合并速度比2012年R中的data.table合并更快?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么pandas在python中的合并速度比2012年R中的data.table合并更快?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2393字,纯文字阅读大概需要4分钟。
内容图文
![为什么pandas在python中的合并速度比2012年R中的data.table合并更快?](/upload/InfoBanner/zyjiaocheng/703/fa3de56b77174ed29794fe11f3f44397.jpg)
我最近遇到了用于python的pandas库,根据this benchmark,它执行非常快速的内存合并.它甚至比R中的data.table软件包(我选择的分析语言)更快.
为什么pandas比data.table快得多?是因为python具有超过R的固有速度优势,还是有一些我不知道的权衡?有没有办法在data.table中执行内部和外部联接而不诉诸合并(X,Y,all = FALSE)和合并(X,Y,all = TRUE)?
这是用于对各种包进行基准测试的R code和Python code.
解决方法:
看起来Wes可能在data.table中发现了一个已知问题,当唯一字符串(级别)的数量很大时:10,000.
Rprof()是否显示在调用sortedmatch(levels(i [[lc]]),levels(x [[rc]])中花费的大部分时间?这实际上不是连接本身(算法),而是预备步骤.
最近的努力已经用于允许键中的字符列,这应该通过与R自己的全局字符串哈希表更紧密地集成来解决该问题. test.data.table()已经报告了一些基准测试结果,但是该代码尚未连接到将级别替换为级别匹配.
对于常规整数列,pandas的合并速度是否比data.table快?这应该是一种隔离算法本身与因子问题的方法.
此外,data.table还考虑了时间序列合并.两个方面:i)多列有序键,例如(id,datetime)ii)快速流行连接(roll = TRUE)a.k.a.最后一次观察结转.
我需要一些时间来确认,因为这是我第一次看到与data.table的比较.
2012年7月发布的data.table v1.8.0更新
>删除内部函数sortedmatch()并替换为chmatch()
将i级别与“factor”类型的列匹配为x级别时这个
初步步骤导致(已知)数量显着减速
因子列的水平很大(例如> 10,000).加剧了
正如Wes McKinney所证明的那样,加入四个这样的柱子的测试
(Python包Pandas的作者).匹配100万个字符串
例如,其中600,000是唯一的,现在从16s减少到0.5s.
同样在那个版本中:
>字符列现在允许在键中,并且是首选
因子. data.table()和setkey()不再强制出现字符
因子.仍然支持因素.实现FR#1493,FR#1224
和(部分)FR#951.
>新函数chmatch()和%chin%,match()的更快版本
和字符向量的百分比%. R的内部字符串缓存是
利用(没有建立哈希表).它们的速度提高了约4倍
比?chmatch中的例子匹配().
截至2013年9月,CRAN上的data.table为v1.8.10,我们正在开发v1.9.0. NEWS现场更新.
但正如我最初写的,上面:
data.table
has time series merge in mind. Two aspects to that: i)
multi column ordered keys such as (id,datetime) ii) fast prevailing
join (roll=TRUE
) a.k.a. last observation carried forward.
所以两个字符列的Pandas equi连接可能仍然比data.table快.因为它听起来像哈希结合两列. data.table不会对密钥进行哈希处理,因为它考虑了主要的有序连接. data.table中的“键”实际上只是排序顺序(类似于SQL中的聚簇索引;即,数据在RAM中的排序方式).例如,列表中是添加辅助密钥.
总之,由于已知问题已得到修复,因此具有超过10,000个唯一字符串的此特定双字符列测试突出显示的明显速度差异现在不应该那么糟糕.
内容总结
以上是互联网集市为您收集整理的为什么pandas在python中的合并速度比2012年R中的data.table合并更快?全部内容,希望文章能够帮你解决为什么pandas在python中的合并速度比2012年R中的data.table合并更快?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。