从非常多的条目创建可迭代列表

时间:2013-03-18 22:12:51

标签: python arrays numpy

我有一个超过600,000个条目的文件。它基本上包含:

user1 choice1
user1 choice2
user2 choice3
user2 choice1
.
.
.
.
user400000 choice60

当我尝试通过常规方法创建字典时(如下所示),空闲停止响应。

d = {}
with open("file.txt") as f:
    for line in f:
       (key, val) = line.split()
       d[key] = val

我希望从这个大型条目文件中轻松快速地操作列表/字典。最有效的方法是什么?

1 个答案:

答案 0 :(得分:1)

pandas允许轻松操作此数据量。您的数据是一系列user标签,其标量数据点与之关联。

import pandas as pd
s = pd.read_csv('file.txt', sep=' ', header=None, index_col=0, squeeze=True)

该指令要求pandas将文件数据加载到Series对象中:

  • 列以空格分隔(sep=' '
  • 该文件没有标题标题,第一行已经是数据(header=None
  • 我们希望以第一列作为索引(index_col=0
  • 来操作日期
  • 默认情况下,pandas会构建一个DataFrame对象,但如果它包含一列数据,我们可以要求Series代替(squeeze=True

s是一个Series对象,用于我们现在可用于访问数据的用户标签:

In [37]: s.head()
Out[37]: 
0
user0    104106
user1     31024
user2     82993
user3    211414
user4    499070
Name: 1

In [38]: s['user3']
Out[38]: 211414

如果'file.txt'为600000行,则需要大约一秒钟才能加载s。 <{1}}上的类似dict的访问是立竿见影的。