Edited at

nysol(python) vs pandas pandas より、遅いけどメモリは食わない

More than 1 year has passed since last update.


nysolがそれほど速くなかった事例。


  • 使用データ

    kaggle においてある国連データ

    から、2014年のデータ year_origin_destination_hs96_6_2014.csv をダウンロードしてください。


  • jupyter notebook で、軽く検証してみました。メモリ消費は圧倒的にnysol が少ないです。


#!/usr/bin/env python

# -*- encoding:utf-8 -*-
import pandas as pd
import nysol.mcmd as nm
#


  • pandas

%%time

columns={"year":"int","origin":"str","dest":"str","hs96":"str","export_val":"float","import_val":"float"}
tg = 'year_origin_destination_hs96_6_2014.csv'
df = pd.read_csv(tg,dtype = columns)
df.groupby('origin')[['export_val','import_val']].sum()


  • pandas 結果

CPU times: user 8.98 s, sys: 740 ms, total: 9.72 s

Wall time: 9.72 s


  • nysol

%%time

tg = 'year_origin_destination_hs96_6_2014.csv'
xxx1 = nm.msum({"i":tg,"k":"origin","f":"export_val,import_val"})
xxx1.run()


  • nysol 結果

CPU times: user 14.4 s, sys: 1.66 s, total: 16.1 s

Wall time: 14.2 s


次にもっと重いデータでやってみました。メモリ消費は、圧倒的にnysol が少ないです。

国連の貿易データ全部


  • pandas 結果

CPU times: user 1min 58s, sys: 13.6 s, total: 2min 11s

Wall time: 2min 38s
16G メモリ消費


  • nysol 結果

CPU times: user 3min 52s, sys: 26.6 s, total: 4min 19s

Wall time: 4min 44s
1.6G メモリ消費