从CSV文件中查找列中最常见的记录

时间:2012-11-24 17:36:03

标签: python csv

我有一个巨大的CSV,每行都有一个用户ID。我想找到在整个集合中最频繁出现的UserID。

我已经使用DictReader模块中的csv来读取csv,因为我认为这对以后操作单个记录最有用。

我找不到在我创建的字典中搜索关键字“UserID”的各种值的方法,并找到最常用的值。

非常感谢任何帮助!

到目前为止,这是我的代码:

import csv
from time import time
start = time()
myData=open("myCSV.csv", "rb" )
csvReader= csv.DictReader(myData)

# declare counters
volume = 0

#sum all data usage
for data in csvReader:
    volume += float(data["volume_total"])
print "Total : %f" %volume

#calculate processing time
elapsed = time() - start
print "Processing time: %f seconds" %elapsed

2 个答案:

答案 0 :(得分:0)

创建一个字典“usersOccurences”,其中包含将成为UserId的键和将要遇到的值。 使用DictReader迭代来自csv文件的所有记录。

对于您找到的每个UserId - 尝试在usersOccurences字典中找到相应的出现次数并递增它,如果此字典中不存在当前的UserId,则将其添加为起始编号1。

迭代后,您可以浏览usersOccurences字典并找到具有最大数字的UserId。

答案 1 :(得分:0)

或者你可以使用numpy loadtxt

  from numpy import loadtxt
  a,b = loadtxt("filename.csv", usecols=(0,1), unpack=True)

然后你可以使用list comprehension创建一个dict(它更快!)

  a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
  d = {x:a.count(x) for x in a}

请参阅此question

要查找最常用的用户ID:

  user_id_list = d.keys()
  frequency = d.values()
  index = frequency.index(max(frequency))
  famous_user = user_id_list[index]