为什么pandas.read_sas()比pandas.read_csv()慢得多?

时间:2018-01-09 14:59:41

标签: python windows pandas csv

我正在编写一个Python脚本来为我做一些数据工作,我对性能有疑问。我正在运行Python 3.6和最新的pandas包。操作系统是Windows 10.无论如何,这里是一个小工具 - 我用这种方式读取了大约7100万行和39列的SAS表:

want = []
for chuck in pd.read_sas('my_sas_table.sas7bdat',chunksize = 50000,encoding='cp1252'):
    chuck['DT_COL'] = pd.to_timedelta(chuck['DT_COL'], unit='D') + pd.Timestamp('1960-1-1')
    want.append(chuck)

这需要大约35-40分钟才能在表格中阅读。如果我要进入SAS,请将表格导出为CSV而不是

pd.read_csv('my_sas_table.csv') 

它只需要大约5分钟。我不想这样做,因为这个脚本将自动化 - 我试图避免在Python之外做任何事情。有没有我可能会缺少的技巧或有人可以解释这种疯狂的性能差异?

我知道更改块上的日期列可能会减慢读取速度 - 但我不相信它会导致

pd.read_sas() 

慢8倍
pd.read_csv()

但我不是专家,我希望你们中的一个人可能会成为!

谢谢!

0 个答案:

没有答案