我有一个包含 4 列的 csv 文件{标签、用户、质量、Cluster_id}。使用 python 我想执行以下操作:对于每个 cluster_id (从 1 到 500),我想查看每个用户的好标签和坏标签的数量(从质量列获得)。有超过6000名用户。我只能逐行读取 csv 文件中的内容。因此,我不确定如何做到这一点。
例如:
Columns of csv = [Tag User Quality Cluster]
Row1= [bag u1 good 1]
Row2 = [ground u2 bad 2]
Row3 = [xxx u1 bad 1]
Row4 = [bbb u2 good 3]
我刚刚设法获取 csv 文件的每一行。
我一次只能访问每一行,不能有两个 for 循环。我要实现的算法的伪代码是:
for cluster in clusters:
for user in users:
if eval == good:
good_num = good_num +1
else:
bad_num = bad_num + 1
collections.defaultdict
在这里应该有很大的帮助:
# WARNING: Untested
from collections import defaultdict
auto_vivificator = lambda: defaultdict(auto_vivificator)
data = auto_vivificator()
# open your csv file
for tag, user, quality, cluster in csv_file:
user = data[cluster].setdefault(user, defaultdict(int))
if is_good(quality):
user["good"] += 1
else:
user["bad"] += 1
for cluster, users in enumerate(data):
print "Cluster:", cluster
for user, quality_metrics in enumerate(users):
print "User:", user
print quality_metrics
print # A blank line
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)