はじめに
Rのdplyrとpythonのpandasで, 同じ表データを同じように処理してみます.
どっちが速いんですかね? 気になりましたので調べてみました.
野球データの集計
2013年メジャーリーグ全試合打席結果データ(77MB, 約19万行)から, 塁打数ランキング.csvを作ってみます.
Rのdplyrを使って書いたスクリプトdplyr.Rは,
library(data.table)
library(dplyr)
## データ読み込み
dat = fread("all2013.csv")
## 集計
dat %>% select(BAT_ID, H_FL) %>%
group_by(BAT_ID) %>%
summarise(BASE = sum(H_FL)) %>%
arrange(desc(BASE)) %>%
write.csv("hoge.csv")
こんな感じ.
> time R -f dplyr.R
R -f dplyr.R 3.13s user 0.15s system 99% cpu 3.294 total
pythonのpandasだと,
#!/usr/bin/python
import pandas as pd
df = pd.read_csv('all2013.csv')
df[["BAT_ID", "H_FL"]].groupby("BAT_ID").sum().sort("H_FL", ascending=False).to_csv('hoge.csv')
こんな感じ.
> time ./pd.py
./pd.py 3.12s user 0.40s system 98% cpu 3.567 total
dplyrだと3.29秒, pandasだと3.56秒.
dplyrがちょっと勝っています.
まとめ
77MBのデータだと, どちらかが特別速いわけではなさそうです.
慣れている方を使えばOKなんでしょうかね?
以上です.