1

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

我已经DictReadercsv模块中读取了 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
4

2 回答 2

0

或者,您可以使用 numpy loadtxt

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

然后你可以使用列表理解创建一个字典(它更快!)

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

参考这个问题

要查找最常见的用户 ID:

  user_id_list = d.keys()
  frequency = d.values()
  index = frequency.index(max(frequency))
  famous_user = user_id_list[index]
于 2012-11-24T19:00:37.573 回答
0

创建一个字典“usersOccurences”,键是 UserId,值是遇到计数。使用 DictReader 遍历 csv 文件中的所有记录。

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

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

于 2012-11-24T17:49:42.017 回答