我正在将一个大的Pandas Data框架加载到内存中。我可以用%%time
魔法来衡量所需的时间:
%%time
df = pd.read_csv(data_file)
CPU times: user 3min 53s, sys: 57.5 s, total: 4min 50s
Wall time: 21min 2s
系统有大约16分钟将CPU提供给其他进程。我知道我的流程不会占用100%的时间(Difference between CPU time and wall time)。但是,因为这是我独自使用的虚拟机,我想16分钟的大部分都与数据加载任务涉及的过程有关。
如果我对htop
使用的资源进行目视检查,大多数核心都处于空闲状态,系统会慢慢增加交换内存量。我想Swap的I / O操作占用了大部分时间,但我想确认一下。
我想看看我能做些什么来改善阅读过程,但我不知道如何调查read_csv
函数内部的时间。
修改:感谢Ori的回答,我可以发现大部分时间花在了Pandas的internals.py _stack_arrays()
方法和{{1}上调用对象read
。熊猫是否计算了柱子类型?我尝试提供类型的字典,加载时间减少到3分钟。