例如文件t.data数据格式如下 1,2,3 4,5,6 7,8,9 //
读入文件 file=open("t.data","r") //初始化
矩阵 matrix=[] //读入数据并加到矩阵中 for line in file: line.strip() matrix.append(line.split(',')) //打印 print(matrix)一般说来dataframe就是a set of columns, each column is an array of values. In pandas, the array is one way or another a (maybe variant of) numpy ndarray. 而ndarray本身不存在一种in place append的 *** 作。。。因为它实际上是一段连续
内存。。。任何需要改变ndarray长度的 *** 作都涉及分配一段长度合适的新的内存,然后copy。。。这是这类 *** 作慢的原因。。。如果pandas dataframe没有用其他设计减少copy的话,我相信Bren说的"That's probably as efficient as any"是很对的。。。
所以in general, 正如Bren说的。。。Pandas/numpy structures are fundamentally not suited for efficiently growing.
Matti 和 arynaq说的是两种常见的对付这个问题的方法。。。我想Matti实际的意思是把要加的rows收集成起来然后concatenate, 这样只copy一次。arynaq的方法就是预先分配内存比较好理解。。。
如果你真的需要incrementally build a dataframe的话,估计你需要实际测试一下两种方法。。。
我的建议是,如有可能,尽力避免incrementally build a dataframe, 比如用其他data structure 收集齐所有data然后转变成dataframe做分析。。。
评论列表(0条)