如何在总数据集中查找唯一项

时间:2015-08-18 07:19:24

标签: python collections unique

我的数据集大约有60,000行。这是您没有唯一ID的采购订单。以下示例数据。

36 40 41 42 43 45 46
38 39 48 50 51 57
41 59 62
63 66 67 68
74 75 76 77

在上面的列表中,每个号码都是购买的商品。我需要以下内容:

  1. 数据集中的唯一项目总数。
  2. 购买最多的前五项。

3 个答案:

答案 0 :(得分:3)

这应该这样做:

from collections import Counter

items = Counter()
with open('data_file.txt', 'r') as f:
    for line in f:
        items.update(line.split())

print("Total Unique Items: {0}".format(len(items)))

for item, count in items.most_common(5):
    print("Item {0} was purchased {1} times".format(item, count))

是的,它很简短:)。

答案 1 :(得分:0)

假设您的数据集是csv文件或文本文件。

from collections import Counter

with open(path, "r") as fp:
    raw = fp.readlines()

purchases = [item for line in raw for item in line.split()]
print "Unique ids: %s" %(len(set(purchases))
print "Most purchased ids:" %(",".join([ item[1] for item in Counter(purchases).most_common(5)]))

以上代码应该给出结果。

希望它有所帮助。

答案 2 :(得分:0)

要获取列表的总长度,请使用循环遍历行,并使用list.append(x)将每个整数添加到Python列表,条件为if x not in list以删除重复项。然后,使用list.sort()对列表进行排序。最后,做len(list)

要获得前5个购买最多的项目,请再次使用循环遍历行,但这次将所有整数添加到列表中,无论重复项如何。然后做collections.Counter(list).most_common(5)[0][0]

请参阅Python列表文档here和集合文档here