2012 年に Python の pandas マージが R の data.table マージよりも高速だったのはなぜですか? 質問する

2012 年に Python の pandas マージが R の data.table マージよりも高速だったのはなぜですか? 質問する

私は最近、パンダPython用のライブラリで、このベンチマーク非常に高速なメモリ内マージを実行します。データ表R (分析に私が選んだ言語) のパッケージ。

はなぜpandasよりもはるかに高速なのでしょうか? これは、Python が R よりも本質的に高速であるためでしょうか、それとも私が知らないトレードオフがあるのでしょうか?とに頼らずに でdata.table内部結合と外部結合を実行する方法はありますか?data.tablemerge(X, Y, all=FALSE)merge(X, Y, all=TRUE)

比較

これがRコードそしてそのPythonコードさまざまなパッケージのベンチマークに使用されます。

ベストアンサー1

パンダが速い理由は、私がより優れたアルゴリズムを考案したからです。これは、高速ハッシュテーブル実装 - klibそしてC/シトンベクトル化できない部分に対する Python インタープリタのオーバーヘッドを回避するためです。このアルゴリズムについては、私のプレゼンテーションで詳しく説明しています。パンダの設計と開発の裏側

との比較はdata.table実は少し興味深い。なぜならRのポイントdata.tableは、事前計算されたインデックスさまざまな列にデータの選択やマージなどの操作を高速化します。この場合(データベース結合)pandasのDataFrameには事前に計算された情報なしこれはマージに使用されているもので、いわば「コールド」マージです。結​​合キーの因数分解バージョンを保存しておけば、結合は大幅に高速化されます。因数分解がこのアルゴリズムの最大のボトルネックだからです。

また、pandas の DataFrame の内部設計は、R の data.frame (内部的には単なる配列のリスト) よりも、こうした種類の操作に適していることも付け加えておきます。

おすすめ記事