Numpy Genfromtxt比pandas read_csv慢

时间:2014-01-31 18:03:32

标签: python csv numpy pandas

我正在加载一个CSV文件(如果你想要特定的文件,那就是来自http://www.kaggle.com/c/loan-default-prediction的训练csv)。在numpy中加载csv会比在pandas中花费更多时间

timeit("genfromtxt('train_v2.csv', delimiter=',')", "from numpy import genfromtxt",  number=1)
102.46608114242554

timeit("pandas.io.parsers.read_csv('train_v2.csv')", "import pandas",  number=1)
13.833590984344482

我还要提到,numpy内存使用量波动更大,更高,并且一旦加载就会显着提高内存使用率。 (numpy为2.49 GB,pandas为~600MB)pandas中的所有数据类型都是8个字节,因此不同的dtypes不同。我无法最大限度地减少内存使用量,因此时差不能归因于分页。

出现这种差异的原因是什么? genfromtxt效率低下吗? (并泄漏了一堆内存?)

编辑:

numpy版本1.8.0

pandas version 0.13.0-111-ge29c8e8

1 个答案:

答案 0 :(得分:0)

Numpy 模块中的

'genfromtxt' 运行两个主循环。第一个将文件中的所有行转换为字符串,然后另一个循环将每个字符串转换为其数据类型。但是与 loadtxt 和 read_csv 等其他命令相比,您在 'genfromtxt' 中获得了更大的灵活性。