2016-06-14 49 views
0

我有Python 3.4与熊猫0.17。我注意到我的程序需要30秒才能读取一个pickle文件。熊猫read_pickle缓慢

df= pd.read_csv(a, skiprows=[1]) 
df.to_pickle(b) 
df2 = pd.read_pickle(b) --- This line takes almost 30 seconds. 

原始csv文件是〜185 MB(2967000行),pickle文件是125 MB。

我有另一个泡菜文件(〜95 MB),它工作正常(可在<秒内读取)。有什么建议么?

+0

它可以交换吗?如果你将它读入同一个变量,需要多长时间:'df = pd.read_pickle(b)'而不是'df2'? – MaxU

+0

我的代码片段中的最后一行实际上是在一个不同的程序中(行#1,2 - file1.py和行#3 - file2.py)。但是我反复尝试了你的建议,并没有帮助。 – jincept

回答

0

我找到了解决问题的方法。我的pickle文件是由root用户的cronjob创建的。 Python程序是在虚拟环境中开发的。全球环境没有熊猫。所以当root用户运行cronjob时,它成功创建了pickle文件,但是这个文件出了问题。我修改了cronjob以使用我的virtualenv中的python二进制文件,并解决了这个问题。我可以看到由全局python和virtualenv python创建的pickle文件中的大小差异。

我还不确定root用户如何在没有熊猫可用的情况下运行python文件。