cry*_*111 10 python csv r pandas data.table
我想匹配R的data.table::fwrite csvPython中文件写入速度.
我们来看看一些时间.首先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
Run Code Online (Sandbox Code Playgroud)
对于Python使用相同 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
Run Code Online (Sandbox Code Playgroud)
目前存在巨大的性能差距.一个主要原因可能是fwrite使用所有内核进行写入过程,而to_csv可能只是单线程.
我无法找到任何csv可以匹配的开箱即用文件编写器的Python软件包data.table::fwrite.我错过了什么吗?还有另一种方法可以加快写入过程吗?
文件大小在两种情况下都约为400MB.代码在同一台机器上运行.我已经试过Python 2.7,3.4,3.5.我正在使用R 3.3.2和data.table 1.10.4.在Python 3.4上,我正在使用pandas 0.20.1