我正在编写一个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()
但我不是专家,我希望你们中的一个人可能会成为!
谢谢!