我想在Python中匹配R
的{{1}} data.table::fwrite
文件写入速度。
让我们检查一下时间。首先csv
...
R
使用library(data.table)
nRow=5e6
nCol=30
df=data.frame(matrix(sample.int(100,nRow*nCol,replace=TRUE),nRow,nCol))
ta=Sys.time()
fwrite(x=df,file="/home/cryo111/test2.csv")
tb=Sys.time()
tb-ta
#Time difference of 1.907027 secs
pandas.to_csv
目前存在巨大的性能差距。一个主要原因可能是import pandas as pd
import numpy as np
import datetime
nRow=int(5e6)
nCol=30
df = pd.DataFrame(np.random.randint(0,100,size=(nRow, nCol)))
ta=datetime.datetime.now()
df.to_csv("/home/cryo111/test.csv")
tb=datetime.datetime.now()
(tb-ta).total_seconds()
#96.421676
使用所有核心进行写入过程,而fwrite
可能只是单线程。
我无法找到任何具有可与to_csv
匹配的开箱即用csv
文件编写器的Python软件包。我错过了什么吗?还有其他方法可以加快写入过程吗?
文件大小在两种情况下都约为400MB。代码在同一台机器上运行。
我尝试过data.table::fwrite
,Python 2.7
,3.4
。我正在使用3.5
和R 3.3.2
。在Python 3.4上,我使用的是data.table 1.10.4