我有一个巨大的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
答案 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]