我正在加载一个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
答案 0 :(得分:0)
'genfromtxt' 运行两个主循环。第一个将文件中的所有行转换为字符串,然后另一个循环将每个字符串转换为其数据类型。但是与 loadtxt 和 read_csv 等其他命令相比,您在 'genfromtxt' 中获得了更大的灵活性。