[英]Using python to find the most common value(s) in the column of CSV file
for each in column_names:
print each + ':'
for L in range(1,len(row_list)):
each_column = columns[each][L]
for i in each_column:
if i == i.index(i)+1:
count+=1
mode=i
上面的代码是我尝试在csv文件的列中查找最常用的值。 代码不完整,为了解决这个问题,我被困了几个小时。
我对python还是很陌生,即使语法我也不熟悉。 所有帮助将不胜感激。
这段代码可以解决问题
import csv
from collections import Counter
filename='test.csv'
with open(filename, 'r') as f:
column = (row[0] for row in csv.reader(f))
print("Most frequent value: {0}".format(Counter(column).most_common()[0][0]))
首先,它打开您的文件,然后创建一个生成器表达式以检索csv中的第一列。
未将其列出的原因是csv可能很长,这可能会导致内存问题。 使用时,生成器会“生成”该项目。
然后,它使用collections.Counter对象对列表中最常见的值进行计数,并获取第一个元素的值。 您可以逐步尝试代码以查看每个步骤的输出。
当您实际上需要分别对每个值进行计数时,只使用一个count
变量。 因此,尽管您的总体方法相当不错,但要遍历似乎是从CSV文件填充的字典,但您需要设置另一个字典来保存每个值的计数。 由于您不能使用collections.Counter
或collections.defaultdict
任何一种不错的方法,因此您可以执行以下操作
counts = {}
for each in column_names:
count = {}
print each + ':'
for row in columns[each]:
count[row] = count.get(row,0) + 1
counts[each] = count
之后,您将获得一个字典counts
,每个column_name
都有一个条目,其中包含该列中的所有值作为键,其计数作为值。 现在,您只需要按值对它们进行排序并输出n个最常见的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.